Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - FILE EXISTS error on setting IPV4 address using ioctl: (1 Item)
   
FILE EXISTS error on setting IPV4 address using ioctl  
Hi,

I am getting a File exists error on using the SIOCSIFADDR ioctl command to set IP address ,but the IP address is changed
 to the requested value. Why the error occurs? 


bool setIpv4Address(std::string interfaceName,std::string ipAddr)
{
    struct sockaddr_in sin; 
    int sockFd;
    std::string Ip;
    struct ifreq ifr;
    bool retStatus;


    memset(&ifr, 0x00, sizeof(ifr));
    memset(&sin, 0x00, sizeof(sin));
    retStatus = true;

    sin.sin_family = AF_INET;
    sin.sin_len = sizeof(sin);
    /// check valid ip
    if (inet_aton(&ipAddr[0], &sin.sin_addr) == 0) 
    { 
      retStatus = false;
    }
    else
    {
        /// Create socket for INET and update the address information.
        memset(&ifr, 0x00, sizeof(ifr));
        strcpy(ifr.ifr_name, &interfaceName[0]);
        memcpy(&ifr.ifr_addr, &sin, sizeof(ifr.ifr_addr));
        if ((sockFd = socket(AF_INET, SOCK_DGRAM, 0)) != -1) 
        {
            
            /// Set IP address using  SIOCSIFADDR ioctl flag.
            if (ioctl(sockFd, SIOCSIFADDR, &ifr) != -1) 
            {
                /// Set Interface Up
                /// Get ifreq.flags
                ioctl(sockFd, SIOCGIFFLAGS, &ifr);
                
                ifr.ifr_flags |= (IFF_UP| IFF_RUNNING); 
                
                if(ioctl(sockFd, SIOCSIFFLAGS, &ifr) == -1)
                {
                    perror("Interface link status change failed");
                    retStatus = false;
                }
            }
            else
            {
                perror("setIpv4Address Setting IPV4 address Error :");
                retStatus = false;
            }
        }
        else
        {
            perror("Socket creation failed ");
            retStatus = false;
        }
        close (sockFd);
    }

    return retStatus;    
}



_______________________________________________

General
http://community.qnx.com/sf/go/post119316
To cancel your subscription to this discussion, please e-mail general-networking-unsubscribe@community.qnx.com




_______________________________________________

General
http://community.qnx.com/sf/go/post119317
To cancel your subscription to this discussion, please e-mail general-networking-unsubscribe@community.qnx.com




_______________________________________________

General
http://community.qnx.com/sf/go/post119318
To cancel your subscription to this discussion, please e-mail general-networking-unsubscribe@community.qnx.com




_______________________________________________

General
http://community.qnx.com/sf/go/post119319
To cancel your subscription to this discussion, please e-mail general-networking-unsubscribe@community.qnx.com




_______________________________________________

General
http://community.qnx.com/sf/go/post119320
To cancel your subscription to this discussion, please e-mail general-networking-unsubscribe@community.qnx.com




_______________________________________________

General
http://community.qnx.com/sf/go/post119321
To cancel your subscription to this discussion, please e-mail general-networking-unsubscribe@community.qnx.com




_______________________________________________

General
http://community.qnx.com/sf/go/post119322
To cancel your subscription to this discussion, please e-mail general-networking-unsubscribe@community.qnx.com




_______________________________________________

General
http://community.qnx.com/sf/go/post119323
To cancel your subscription to this discussion, please e-mail general-networking-unsubscribe@community.qnx.com




_______________________________________________

General
http://community.qnx.com/sf/go/post119324
To cancel your subscription to this discussion, please e-mail...
View Full Message