Message ID | 20110603083918.GA15883@one.firstfloor.org |
---|---|
State | Rejected, archived |
Delegated to: | stephen hemminger |
Headers | show |
From: Andi Kleen <andi@firstfloor.org> Date: Fri, 3 Jun 2011 10:39:18 +0200 > My vpnc-connect script broke in a kernel release because the new > kernel started returning the ipid in ip cache get. The script > would do ip route get, modify the route and then feed it back > to ip route add. But ip route add couldn't parse ipid .. > > Make route add skip all status fields output by ip cache get > > In theory they could be fed to the kernel too, but that's likely > not very useful (and I'm not fully sure if the kernel would > even use them) > > Signed-off-by: Andi Kleen <ak@linux.intel.com> I think we've had this discussion before. There are no guarentees that what the tool outputs for routes is suitable for creating routes. People have already put vpnc script fixes into Fedora and similar already. iproute2 is not where the hacks belong. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> There are no guarentees that what the tool outputs for routes is > suitable for creating routes. > > People have already put vpnc script fixes into Fedora and similar > already. > > iproute2 is not where the hacks belong. Hmmm, so you expect every user to maintain the sed line from hell? Does not sound very user friendly to me. An alternative would be to add a option to ip route get that disables printing any options that cannot be used for input. Would that be more acceptable? -Andi
diff --git a/ip/iproute.c b/ip/iproute.c index 2fef35b..8b7421e 100644 --- a/ip/iproute.c +++ b/ip/iproute.c @@ -936,6 +936,17 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv) strcmp(*argv, "oif") == 0) { NEXT_ARG(); d = *argv; + /* Ignore everything else printed by ip route get. */ + } else if (strcmp(*argv, "ipid") == 0 || + strcmp(*argv, "ts") == 0 || + strcmp(*argv, "tsage") == 0 || + strcmp(*argv, "age") == 0 || + strcmp(*argv, "used") == 0 || + strcmp(*argv, "users") == 0 || + strcmp(*argv, "error") == 0 || + strcmp(*argv, "cache") == 0 || + strcmp(*argv, "expires") == 0) { + NEXT_ARG(); } else { int type; inet_prefix dst;
My vpnc-connect script broke in a kernel release because the new kernel started returning the ipid in ip cache get. The script would do ip route get, modify the route and then feed it back to ip route add. But ip route add couldn't parse ipid .. Make route add skip all status fields output by ip cache get In theory they could be fed to the kernel too, but that's likely not very useful (and I'm not fully sure if the kernel would even use them) Signed-off-by: Andi Kleen <ak@linux.intel.com>