This is main routine to parse ip-link(8) configuration parameters. Main reason to improve it is to pass network device @name, @dev and other parameters to kind specific ->parse_opt() function so they can use this information.
For example later we will extend iplink_get() to parse netlink attributes deeper and replace open coded rtnl_talk() in ip/tunnel modules to simplify getting existing tunnel information. Among main change there is a number of patches to prepare for it that improve iplink_parse() in some way. See individual patch description message for more information. v3 Move vxlan/veth ifinfomsg save/restore to separate patch to make clear change that perform most of request buffer setups and checks in iplink_parse(). Update commit message descriptions and extra new line from "utils: Introduce and use nodev() helper routine" patch. v2 Terminate via exit() when failing to parse command line arguments to help identify failing line in batch mode. Thanks, Serhii Serhey Popovych (8): utils: Introduce and use nodev() helper routine iplink: Correctly report error when network device isn't found iplink: Use "dev" and "name" parameters interchangeable when possible iplink: Follow documented behaviour when "index" is given veth,vxcan: Save/reinitialize/restore whole @struct ifinfomsg iplink: Perform most of request buffer setups and checks in iplink_parse() iplink: Move data structures to block of their users iplink: Reduce number of arguments to iplink_parse() bridge/fdb.c | 17 ++-- bridge/link.c | 8 +- bridge/mdb.c | 19 ++--- bridge/vlan.c | 7 +- include/utils.h | 1 + ip/ip6tunnel.c | 6 +- ip/ip_common.h | 17 +++- ip/ipaddress.c | 7 +- ip/iplink.c | 200 +++++++++++++++++++++++++++------------------- ip/iplink_bond.c | 8 +- ip/iplink_bond_slave.c | 4 +- ip/iplink_bridge.c | 11 ++- ip/iplink_bridge_slave.c | 4 +- ip/iplink_can.c | 4 +- ip/iplink_geneve.c | 4 +- ip/iplink_hsr.c | 4 +- ip/iplink_ipoib.c | 4 +- ip/iplink_ipvlan.c | 4 +- ip/iplink_macvlan.c | 4 +- ip/iplink_vlan.c | 4 +- ip/iplink_vrf.c | 5 +- ip/iplink_vxcan.c | 41 +++------- ip/iplink_vxlan.c | 11 ++- ip/iplink_xdp.c | 7 +- ip/ipmacsec.c | 4 +- ip/ipmroute.c | 7 +- ip/ipneigh.c | 14 ++-- ip/ipntable.c | 6 +- ip/iproute.c | 36 +++------ ip/iproute_lwtunnel.c | 4 +- ip/iptunnel.c | 6 +- ip/link_gre.c | 43 +++++----- ip/link_gre6.c | 43 +++++----- ip/link_ip6tnl.c | 40 +++++----- ip/link_iptnl.c | 40 +++++----- ip/link_veth.c | 41 +++------- ip/link_vti.c | 43 +++++----- ip/link_vti6.c | 43 +++++----- lib/utils.c | 6 ++ tc/m_mirred.c | 6 +- tc/tc_class.c | 14 ++-- tc/tc_filter.c | 18 ++--- tc/tc_qdisc.c | 12 +-- 43 files changed, 404 insertions(+), 423 deletions(-) -- 1.7.10.4