On 11/19/2014 12:32 PM, Anders Roxell wrote:
On 2014-11-15 12:25, Maxim Uvarov wrote:
On 11/14/2014 10:50 PM, Mike Holmes wrote:
+       ret = ioctl(sockfd, SIOCSIFMTU, (caddr_t)&ifr);
+       if (ret) {
 From the ioctl man page
Usually, on success zero is returned.  A few ioctl() requests use the
        return value as an output parameter and return a nonnegative value on
        success.  On error, -1 is returned, and errno is set appropriately.

So in this case you need to check for (-1==ret)

Mike, yes I saw that. But I don't think it's needed for ioctls which I'm
using here. I.e. for SIOCSIFMTU and other. I want them to return 0. Any
other value is error for that ioctls.
Every person that reads this will wounder why you check for different
for zero instead of different from -1.

Be complient with the ioctl manpage please.

Cheers,
Anders
You can check:
1. if ioctl returned not success (0).
2. if ioctl returned error -1.

I prefer to see success in success case. If not success, then rise error.


However if it's disputable place I can follow upstream projects code for that ioctl:

ifconfig code:
            if (ioctl(skfd, SIOCSIFMTU, &ifr) < 0) {
                fprintf(stderr, "SIOCSIFMTU: %s\n", strerror(errno));
                goterr = 1;
            }
if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0)


iproute code:
        err = ioctl(fd, SIOCSIFFLAGS, &ifr);
        if (err)
                        perror("SIOCSIFFLAGS");

        if (ioctl(s, SIOCSIFMTU, &ifr) < 0) {
                perror("SIOCSIFMTU");


Check for <0 is also not clear. I prefer to see success there. But I just follow upstream projects.
Will that work for you?

Maxim.





_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to