Hi Keller,

On Tue, Jul 18, 2017 at 08:40:59PM +0000, Keller, Jacob E wrote:
> > +int rtnl_link_info(struct interface *iface)
> > +{
> > +   int fd, index;
> > +
> > +   index = if_nametoindex(iface->name);
> > +
> > +   if (index == 0) {
> > +           pr_err("failed to get interface %s index: %m", iface->name);
> > +           goto no_fd;
> > +   }
> > +
> > +   fd = rtnl_open();
> > +   if (fd < 0)
> > +           goto no_fd;
> > +
> > +   if (rtnl_link_query(fd, index))
> > +           goto no_info;
> > +   if (rtnl_link_status(fd, NULL, iface->ts_iface))
> > +           goto no_info;
> > +
> > +   /* If we do not have a slave, then use our own interface name
> > +    * as ts_iface
> > +    */
> > +   if (iface->ts_iface[0] == '\0')
> > +           strncpy(iface->ts_iface, iface->name, MAX_IFNAME_SIZE);
> > +
> 
> Seems like we're duplicating code here just to maintain a return value?
> 
> > +   rtnl_close(fd);
> > +   return 0;
> > +
> > +no_info:
> > +   rtnl_close(fd);
> > +no_fd:
> > +   if (iface->ts_iface[0] == '\0')
> > +           strncpy(iface->ts_iface, iface->name, MAX_IFNAME_SIZE);
> > +
> > +   return -1;
> > +}

hmm, you are right, the code is a little clumsy, how about

        fd = rtnl_open();

        if (fd > 0 && ! rtnl_link_query(fd, index))
                rtnl_link_status(fd, NULL, iface->ts_iface);

        /* If we do not have a slave, then use our own interface name
         * as ts_iface
         */
        if (iface->ts_iface[0] == '\0')
                strncpy(iface->ts_iface, iface->name, MAX_IFNAME_SIZE);

        if (fd > 0) {
                rtnl_close(fd);
                return 0;
        } else {
                return -1;
        }

Thanks
Hangbin

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to