~ubuntu-branches/ubuntu/vivid/knemo/vivid

« back to all changes in this revision

Viewing changes to src/common/utils.cpp

  • Committer: Package Import Robot
  • Author(s): Felix Geyer
  • Date: 2013-05-11 18:56:39 UTC
  • mfrom: (2.2.5 experimental)
  • Revision ID: package-import@ubuntu.com-20130511185639-br5lb3qjrxtec0zf
Tags: 0.7.6-2
* Upload to unstable.
* Use canonical Vcs-Svn URI.

Show diffs side-by-side

added added

removed removed

Lines of Context:
67
67
    if ( rtfamily == AF_INET ||
68
68
         rtfamily == AF_INET6 )
69
69
    {
70
 
        struct nl_addr *dst = rtnl_route_get_dst( route );
71
 
        struct nl_addr *addr = rtnl_route_get_gateway( route );
 
70
        struct rtnl_nexthop *nh = NULL;
 
71
        struct nl_addr *addr = NULL;
 
72
        if ( rtnl_route_get_nnexthops( route ) > 0 )
 
73
        {
 
74
            nh = rtnl_route_nexthop_n ( route, 0 );
 
75
            addr = rtnl_route_nh_get_gateway( nh );
 
76
        }
72
77
 
73
 
        if ( nl_addr_get_len( dst ) == 0 && addr )
 
78
        if ( addr )
74
79
        {
75
80
            char gwaddr[ INET6_ADDRSTRLEN ];
76
81
            char gwname[ IFNAMSIZ ];
78
83
            struct in_addr * inad = reinterpret_cast<struct in_addr *>(nl_addr_get_binary_addr( addr ));
79
84
            nl_addr2str( addr, gwaddr, sizeof( gwaddr ) );
80
85
            inet_ntop( rtfamily, &inad->s_addr, gwaddr, sizeof( gwaddr ) );
81
 
            int oif = rtnl_route_get_oif( route );
 
86
            int oif = rtnl_route_nh_get_ifindex( nh );
82
87
            if_indextoname( oif, gwname );
83
88
 
84
89
            if ( rtfamily == AF_INET )
211
216
                    ifname = tempname;
212
217
                }
213
218
 
214
 
                cp += sizeof( struct sockaddr );
 
219
                cp += SA_SIZE( sa );
215
220
            }
216
221
    }
217
222
    else