使用C接口设置linux IP地址,物理地址等相关问题,谢谢

c接口设置linux的ip ,物理地址,在不同的linux系统里,一个可以成功设置,一个却失败了, 请问大家会是什么原因导致的哇,现把设置IP地址的代码复制如下:
/**********************************************************************

  • Function: SetIpAddress
  • Description: 设置ip地址
  • Input: pInterface :网络接口名字 如:eth0,IpAddress:ip地址的
  • Return: 成功 1,失败 0
  • Others:

    **********************************************************************/
    unsigned char SetIpAddress(char *pInterface,unsigned int IpAddress)
    {

    struct ifreq ifr;
    struct sockaddr_in *sinaddr;
    int sockfd;

    if((pInterface == NULL)||(pInterface[0]!='e')||(pInterface[1]!='t')||(pInterface[2]!='h'))
    {
    printf("input inteface error!\n");
    return FALSE;
    }
    if(IpAddress == 0)
    {
    printf("input ip address error\n");
    return FALSE;
    }

    sockfd= socket(AF_INET,SOCK_DGRAM,0);
    if (sockfd<0)
    {
    printf("Can't creat socket \r\n");
    }

    memset(&ifr, 0, sizeof(ifr));
    strncpy(ifr.ifr_name, pInterface, sizeof(ifr.ifr_name)-1);
    sinaddr = (struct sockaddr_in *)&ifr.ifr_addr;
    sinaddr->sin_family = AF_INET;
    sinaddr->sin_addr.s_addr = IpAddress;
    if (0 > ioctl(sockfd, SIOCSIFADDR, &ifr))
    {
    printf("Can't set ip address\r\n");
    }

    close(sockfd);

    return TRUE;
    }

这个要看网络连接、防火墙,是否有别的端口占用等

既然有源码看代码的返回值。。来判断错误的原因