Subject: Re: iproute2 issue with adding rules.

From: Ben Greear <[email-masked]>
Date: Mon, 17 May 2010 13:28:01 -0700

On 05/17/2010 01:13 PM, Ben Greear wrote:
> On 05/17/2010 12:03 PM, Ben Greear wrote:
>> On older releases, you can do this with iproute:
>>
>> # ip ru add from 9.9.9.2/32 table 226 pref 400
>> #
>>
>> But, in latest git, it returns an error:
>> # ip ru add from 9.9.9.2/32 table 226 pref 400
>> Error: an inet prefix is expected rather than "9.9.9.2/32".
>>
>> Is that on purpose?
>
> I was thinking maybe this was a library issue, since I compiled
> on one machine and ran the 'ip' exe on another. So, I tried compiling
> on the test system.

I'm not thinking too well today, but this patch fixes the compile.
No idea if it's actually correct code.
Still can't add the rule like I was trying...but at least it's probably
not an issue with libraries:

[root@ct503-10G-09 iproute2]# git diff
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 48f7b1e..4d4481a 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -331,13 +331,13 @@ int print_linkinfo(const struct sockaddr_nl *who,
                                 );
                 }
         }
-       if (do_link && tb[IFLA_VFINFO] && tb[IFLA_NUM_VF]) {
+       if (do_link && tb[IFLA_VFINFO_LIST] && tb[IFLA_NUM_VF]) {
                 SPRINT_BUF(b1);
-               struct rtattr *rta = tb[IFLA_VFINFO];
+               struct rtattr *rta = tb[IFLA_VFINFO_LIST];
                 struct ifla_vf_info *ivi;
                 int i;
                 for (i = 0; i < *(int *)RTA_DATA(tb[IFLA_NUM_VF]); i++) {
-                       if (rta->rta_type != IFLA_VFINFO) {
+                       if (rta->rta_type != IFLA_VFINFO_LIST) {
                                 fprintf(stderr, "BUG: rta type is %d\n", rta->rta_type);
                                 break;
                         }

-- 
Ben Greear <[email-masked]>
Candela Technologies Inc  http://www.candelatech.com