iproute2/ip
Stefano Brivio b5cf263670 iproute: Set flags and attributes on dump to get IPv6 cached routes to be flushed
With a current (5.1) kernel version, IPv6 exception routes can't be listed
(ip -6 route list cache) or flushed (ip -6 route flush cache). Kernel
support for this is being added back. Relevant net-next commits:

  564c91f7e563 fib_frontend, ip6_fib: Select routes or exceptions dump from RTM_F_CLONED
  ef11209d4219 Revert "net/ipv6: Bail early if user only wants cloned entries"
  3401bfb1638e ipv6/route: Don't match on fc_nh_id if not set in ip6_route_del()
  bf9a8a061ddc ipv6/route: Change return code of rt6_dump_route() for partial node dumps
  1e47b4837f3b ipv6: Dump route exceptions if requested
  40cb35d5dc04 ip6_fib: Don't discard nodes with valid routing information in fib6_locate_1()

However, to allow the kernel to filter routes based on the RTM_F_CLONED
flag, we need to make sure this flag is always passed when we want cached
routes to be dumped, and we can also pass table and output interface
attributes to have the kernel filtering on them, if requested by the user.

Use the existing iproute_dump_filter() as a filter for the dump request in
iproute_flush(). This way, 'ip -6 route flush cache' works again.

v2: Instead of creating a separate 'filter' function dealing with
    RTM_F_CACHED only, use the existing iproute_dump_filter() and get
    table and oif kernel filtering for free. Suggested by David Ahern.

Fixes: aba5acdfdb ("(Logical change 1.3)")
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2019-06-26 14:27:00 -07:00
..
.gitignore Another .gitignore file. 2006-08-08 12:11:23 -07:00
Makefile ip: support for xfrm interfaces 2019-04-05 15:05:00 -07:00
ifcfg ifcfg/rtpr: convert to POSIX shell 2018-01-10 08:26:09 -08:00
ila_common.h SPDX license identifiers 2017-11-24 12:21:35 -08:00
ip.c netns: make netns_{save,restore} static 2019-06-20 14:30:41 -07:00
ip6tunnel.c ip6tunnel: fix 'ip -6 {show|change} dev <name>' cmds 2019-06-10 10:43:09 -07:00
ip_common.h ip: bond: add xstats support 2019-03-15 13:58:16 -07:00
ipaddress.c ip monitor: display interfaces from all groups 2019-06-21 12:59:50 -07:00
ipaddrlabel.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
ipfou.c ip fou: Support binding FOU ports 2019-04-22 11:42:54 -07:00
ipila.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
ipl2tp.c use print_{,h}hu instead of print_uint when format specifier is %{,h}hu 2019-02-10 19:00:59 -08:00
iplink.c iplink: don't try to get ll addr len when creating an iface 2019-05-30 11:03:20 -07:00
iplink_bond.c ip: bond: add xstats support 2019-03-15 13:58:16 -07:00
iplink_bond_slave.c ip: bond: add xstats support 2019-03-15 13:58:16 -07:00
iplink_bridge.c iplink: bridge: add support for vlan_stats_per_port 2019-04-21 06:47:39 -07:00
iplink_bridge_slave.c ip: bridge: add mcast to unicast config flag 2019-03-22 09:44:49 -07:00
iplink_can.c ip: iplink_can.c: fix json formatting 2018-12-07 09:22:29 -08:00
iplink_dummy.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_geneve.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
iplink_hsr.c ip: iplink_hsr.c: add json output support 2017-08-17 18:02:40 -07:00
iplink_ifb.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_ipoib.c ip: iplink_ipoib.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_ipvlan.c iplink: add ipvtap support 2018-09-20 17:53:56 -07:00
iplink_macvlan.c ip: link_macvlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_netdevsim.c ip: link: add support for netdevsim device type 2018-01-02 20:46:19 -08:00
iplink_nlmon.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_rmnet.c ip: add rmnet initial support 2018-06-15 11:15:14 -07:00
iplink_team.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vcan.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vlan.c iplink_vlan: add support for VLAN bridge binding flag 2019-04-26 11:12:58 -07:00
iplink_vrf.c iplink_vrf: Save device index from response for return code 2018-06-01 15:45:09 -04:00
iplink_vxcan.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
iplink_vxlan.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
iplink_xdp.c iplink: add support for reporting multiple XDP programs 2018-07-15 13:10:03 -07:00
iplink_xstats.c ip: xstats: add json output support 2019-03-15 13:55:57 -07:00
ipmacsec.c Add support for configuring MACsec gcm-aes-256 cipher type. 2019-06-18 09:55:51 -07:00
ipmaddr.c lib: introduce print_nl 2018-09-11 08:29:33 -07:00
ipmonitor.c ipmonitor: make local variable static 2018-11-19 11:42:44 -08:00
ipmroute.c ipmroute: Prevent overlapping storage of `filter` global 2019-06-18 09:43:29 -07:00
ipneigh.c ipneigh: Print neighbour offload indication 2019-04-21 06:23:23 -07:00
ipnetconf.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
ipnetns.c netns: make netns_{save,restore} static 2019-06-20 14:30:41 -07:00
ipntable.c fix print_0xhex on 32 bit 2018-12-10 14:20:32 -08:00
ipprefix.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
iproute.c iproute: Set flags and attributes on dump to get IPv6 cached routes to be flushed 2019-06-26 14:27:00 -07:00
iproute_lwtunnel.c iproute: Set ip/ip6 lwtunnel flags 2019-01-25 09:17:27 +13:00
iprule.c iprule: always print realms keyword for rule 2019-04-24 15:06:15 -07:00
ipseg6.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
iptoken.c ip/iptoken: fix dump error when ipv6 disabled 2019-06-26 14:23:12 -07:00
iptunnel.c utils: Introduce and use nodev() helper routine 2018-03-11 17:58:36 -07:00
iptuntap.c fix print_0xhex on 32 bit 2018-12-10 14:20:32 -08:00
ipvrf.c ip vrf: use hook to change VRF in the child 2019-06-20 14:30:41 -07:00
ipxfrm.c ip xfrm: support setting/printing XFRMA_IF_ID attribute in states/policies 2019-04-11 15:26:43 -07:00
link_gre.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
link_gre6.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
link_ip6tnl.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
link_iptnl.c ip: add missing space after 'external' in detailed mode 2019-04-17 16:26:31 -07:00
link_veth.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
link_vti.c fix print_0xhex on 32 bit 2018-12-10 14:20:32 -08:00
link_vti6.c fix print_0xhex on 32 bit 2018-12-10 14:20:32 -08:00
link_xfrm.c ip: support for xfrm interfaces 2019-04-05 15:05:00 -07:00
routef mark shell scripts +x 2018-01-10 08:23:49 -08:00
routel mark shell scripts +x 2018-01-10 08:23:49 -08:00
rtm_map.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
rtmon.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
rtpr ifcfg/rtpr: convert to POSIX shell 2018-01-10 08:26:09 -08:00
static-syms.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
tcp_metrics.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
tunnel.c Include bsd/string.h only in include/utils.h 2018-11-05 08:38:32 -08:00
tunnel.h iptunnel/ip6tunnel: Use netlink to walk through tunnels list 2018-02-07 16:15:42 -08:00
xfrm.h xfrm: add option to hide keys in state output 2019-01-21 08:31:20 -08:00
xfrm_monitor.c xfrm: add option to hide keys in state output 2019-01-21 08:31:20 -08:00
xfrm_policy.c ip-xfrm: Respect family in deleteall and list commands 2019-05-06 13:32:44 -07:00
xfrm_state.c ip-xfrm: Respect family in deleteall and list commands 2019-05-06 13:32:44 -07:00