David Ahern wrote: > On 2/22/18 6:02 AM, Serhey Popovych wrote: >> Introduce new @struct iplink_parse_args data structure to consolidate >> arguments to iplink_parse(). This will reduce number of arguments >> passed to it. >> >> Pass this data structure to ->parse_opt() in iplink specific modules: >> it may be used to get network device name and other information. >> >> Signed-off-by: Serhey Popovych <serhe.popov...@gmail.com> >> --- >> ip/ip_common.h | 16 +++++++++++++--- >> ip/iplink.c | 34 ++++++++++++++++++++++------------ >> ip/iplink_bond.c | 4 +++- >> ip/iplink_bond_slave.c | 4 +++- >> ip/iplink_bridge.c | 4 +++- >> 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 | 14 ++++++-------- >> ip/iplink_vxlan.c | 4 +++- >> ip/ipmacsec.c | 4 +++- >> ip/link_gre.c | 6 ++++-- >> ip/link_gre6.c | 6 ++++-- >> ip/link_ip6tnl.c | 6 ++++-- >> ip/link_iptnl.c | 6 ++++-- >> ip/link_veth.c | 14 ++++++-------- >> ip/link_vti.c | 6 ++++-- >> ip/link_vti6.c | 6 ++++-- >> 24 files changed, 114 insertions(+), 57 deletions(-) >> > > Seems like a lot of churn for no benefit. >
I plan to extend iplink_get() to be used in tunnels and replace lot of duplicated code. Since iplink_get() needs interface name and there is no easy way to get it from netlink buffer provided via @struct nlmsghdr n, I do all this stuff. Same applies to name_is_vrf() and ipvrf_get_table(): they do nearly the same things and can be consolidated. They also use interface name. On the other hand at same point I want to start RFC to submit IFLA_IFNAME by default for all netlink commands instead of ll_name_to_index() in userspace and giving index to kernel: it is subject to race, interface might disappear, another interface could be created before we send netlink message with ifindex. Kernel knowns better how to translate name to network device and does this with proper synchronization (RTNL). >
signature.asc
Description: OpenPGP digital signature