diff options
-rw-r--r-- | networking/libiproute/iproute.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c index ec4d8ba03..170c67b30 100644 --- a/networking/libiproute/iproute.c +++ b/networking/libiproute/iproute.c | |||
@@ -298,6 +298,19 @@ static int FAST_FUNC print_route(const struct sockaddr_nl *who UNUSED_PARAM, | |||
298 | if (tb[RTA_PRIORITY]) { | 298 | if (tb[RTA_PRIORITY]) { |
299 | printf(" metric %d ", *(uint32_t*)RTA_DATA(tb[RTA_PRIORITY])); | 299 | printf(" metric %d ", *(uint32_t*)RTA_DATA(tb[RTA_PRIORITY])); |
300 | } | 300 | } |
301 | if (r->rtm_flags & RTNH_F_DEAD) { | ||
302 | printf("dead "); | ||
303 | } | ||
304 | if (r->rtm_flags & RTNH_F_ONLINK) { | ||
305 | printf("onlink "); | ||
306 | } | ||
307 | if (r->rtm_flags & RTNH_F_PERVASIVE) { | ||
308 | printf("pervasive "); | ||
309 | } | ||
310 | if (r->rtm_flags & RTM_F_NOTIFY) { | ||
311 | printf("notify "); | ||
312 | } | ||
313 | |||
301 | if (r->rtm_family == AF_INET6) { | 314 | if (r->rtm_family == AF_INET6) { |
302 | struct rta_cacheinfo *ci = NULL; | 315 | struct rta_cacheinfo *ci = NULL; |
303 | if (tb[RTA_CACHEINFO]) { | 316 | if (tb[RTA_CACHEINFO]) { |
@@ -330,7 +343,7 @@ static int iproute_modify(int cmd, unsigned flags, char **argv) | |||
330 | { | 343 | { |
331 | static const char keywords[] ALIGN1 = | 344 | static const char keywords[] ALIGN1 = |
332 | "src\0""via\0""mtu\0""lock\0""protocol\0"IF_FEATURE_IP_RULE("table\0") | 345 | "src\0""via\0""mtu\0""lock\0""protocol\0"IF_FEATURE_IP_RULE("table\0") |
333 | "dev\0""oif\0""to\0""metric\0"; | 346 | "dev\0""oif\0""to\0""metric\0""onlink\0"; |
334 | enum { | 347 | enum { |
335 | ARG_src, | 348 | ARG_src, |
336 | ARG_via, | 349 | ARG_via, |
@@ -341,6 +354,7 @@ IF_FEATURE_IP_RULE(ARG_table,) | |||
341 | ARG_oif, | 354 | ARG_oif, |
342 | ARG_to, | 355 | ARG_to, |
343 | ARG_metric, | 356 | ARG_metric, |
357 | ARG_onlink, | ||
344 | }; | 358 | }; |
345 | enum { | 359 | enum { |
346 | gw_ok = 1 << 0, | 360 | gw_ok = 1 << 0, |
@@ -431,6 +445,8 @@ IF_FEATURE_IP_RULE(ARG_table,) | |||
431 | NEXT_ARG(); | 445 | NEXT_ARG(); |
432 | metric = get_u32(*argv, "metric"); | 446 | metric = get_u32(*argv, "metric"); |
433 | addattr32(&req.n, sizeof(req), RTA_PRIORITY, metric); | 447 | addattr32(&req.n, sizeof(req), RTA_PRIORITY, metric); |
448 | } else if (arg == ARG_onlink) { | ||
449 | req.r.rtm_flags |= RTNH_F_ONLINK; | ||
434 | } else { | 450 | } else { |
435 | int type; | 451 | int type; |
436 | inet_prefix dst; | 452 | inet_prefix dst; |