iproute2/ip
Jarod Wilson 7887500008 bond: support xmit_hash_policy=vlan+srcmac
There's a new transmit hash policy being added to the bonding driver that
is a simple XOR of vlan ID and source MAC, xmit_hash_policy vlan+srcmac.
This trivial patch makes it configurable and queryable via iproute2.

$ sudo modprobe bonding mode=2 max_bonds=1 xmit_hash_policy=0

$ sudo ip link set bond0 type bond xmit_hash_policy vlan+srcmac

$ ip -d link show bond0
11: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether ce:85:5e:24:ce:90 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 65535
    bond mode balance-xor miimon 0 updelay 0 downdelay 0 peer_notify_delay 0 use_carrier 1 arp_interval 0 arp_validate none arp_all_targets any
primary_reselect always fail_over_mac none xmit_hash_policy vlan+srcmac resend_igmp 1 num_grat_arp 1 all_slaves_active 0 min_links 0 lp_interval 1
packets_per_slave 1 lacp_rate slow ad_select stable tlb_dynamic_lb 1 addrgenmode eui64 numtxqueues 16 numrxqueues 16 gso_max_size 65536 gso_max_segs
65535

$ grep Hash /proc/net/bonding/bond0
Transmit Hash Policy: vlan+srcmac (5)

$ sudo ip link add test type bond help
Usage: ... bond [ mode BONDMODE ] [ active_slave SLAVE_DEV ]
                [ clear_active_slave ] [ miimon MIIMON ]
                [ updelay UPDELAY ] [ downdelay DOWNDELAY ]
                [ peer_notify_delay DELAY ]
                [ use_carrier USE_CARRIER ]
                [ arp_interval ARP_INTERVAL ]
                [ arp_validate ARP_VALIDATE ]
                [ arp_all_targets ARP_ALL_TARGETS ]
                [ arp_ip_target [ ARP_IP_TARGET, ... ] ]
                [ primary SLAVE_DEV ]
                [ primary_reselect PRIMARY_RESELECT ]
                [ fail_over_mac FAIL_OVER_MAC ]
                [ xmit_hash_policy XMIT_HASH_POLICY ]
                [ resend_igmp RESEND_IGMP ]
                [ num_grat_arp|num_unsol_na NUM_GRAT_ARP|NUM_UNSOL_NA ]
                [ all_slaves_active ALL_SLAVES_ACTIVE ]
                [ min_links MIN_LINKS ]
                [ lp_interval LP_INTERVAL ]
                [ packets_per_slave PACKETS_PER_SLAVE ]
                [ tlb_dynamic_lb TLB_DYNAMIC_LB ]
                [ lacp_rate LACP_RATE ]
                [ ad_select AD_SELECT ]
                [ ad_user_port_key PORTKEY ]
                [ ad_actor_sys_prio SYSPRIO ]
                [ ad_actor_system LLADDR ]

BONDMODE := balance-rr|active-backup|balance-xor|broadcast|802.3ad|balance-tlb|balance-alb
ARP_VALIDATE := none|active|backup|all
ARP_ALL_TARGETS := any|all
PRIMARY_RESELECT := always|better|failure
FAIL_OVER_MAC := none|active|follow
XMIT_HASH_POLICY := layer2|layer2+3|layer3+4|encap2+3|encap3+4|vlan+srcmac
LACP_RATE := slow|fast
AD_SELECT := stable|bandwidth|count

Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: Jay Vosburgh <j.vosburgh@gmail.com>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
2021-01-23 18:33:15 +00:00
..
.gitignore Another .gitignore file. 2006-08-08 12:11:23 -07:00
Makefile ip link: initial support for bareudp devices 2020-07-06 11:11:05 -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 ip: add IP_LIB_DIR environment variable 2020-12-02 16:37:07 +00:00
ip6tunnel.c ip tunnel: add json output 2019-08-07 12:00:58 -07:00
ip_common.h Move the use_iec declaration to the tools 2020-12-09 02:28:43 +00:00
ipaddress.c Merge branch 'main' into next 2020-10-11 20:11:09 -06:00
ipaddrlabel.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
ipfou.c ip fou: respect preferred_family for IPv6 2020-07-06 11:03:09 -07:00
ipila.c treewide: refactor help messages 2019-05-20 14:35:07 -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 ip: add IP_LIB_DIR environment variable 2020-12-02 16:37:07 +00:00
iplink_bareudp.c iplink_bareudp: use common include syntax 2020-07-08 08:38:58 -07:00
iplink_bond.c bond: support xmit_hash_policy=vlan+srcmac 2021-01-23 18:33:15 +00:00
iplink_bond_slave.c iplink: bond: print lacp actor/partner oper states as strings 2020-01-02 17:45:32 +00:00
iplink_bridge.c bridge: fix string length warning 2020-11-29 16:20:16 -08:00
iplink_bridge_slave.c ip: iplink_bridge_slave: Convert to use print_on_off() 2020-11-24 21:43:30 -07:00
iplink_can.c iplink_can: fix format output of clock with flag -details 2019-07-26 15:05:20 -07:00
iplink_dummy.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_geneve.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
iplink_hsr.c iplink: hsr: add support for creating PRP device similar to HSR 2020-08-22 21:14:12 -07:00
iplink_ifb.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_ipoib.c ip: iplink_ipoib.c: Remove extra spaces 2020-09-30 22:29:05 -07:00
iplink_ipvlan.c iplink: add ipvtap support 2018-09-20 17:53:56 -07:00
iplink_macvlan.c iplink:macvlan: Added bcqueuelen parameter 2020-12-16 04:02:07 +00: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 lib: parse_mapping: Recognize a keyword "all" 2020-11-13 19:43:15 -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 treewide: refactor help messages 2019-05-20 14:35:07 -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 lib: Add parse_one_of(), parse_on_off() 2020-11-13 19:43:15 -07:00
ipmaddr.c iproute2: ip maddress: Check multiaddr length 2020-08-22 21:12:30 -07:00
ipmonitor.c ipmonitor: Mention "nexthop" object in help and man page 2021-01-10 17:17:32 +00:00
ipmptcp.c mptcp: show all endpoints when no ID is specified 2020-07-27 16:39:58 -07:00
ipmroute.c Merge branch 'master' into next 2019-06-21 15:59:24 -07:00
ipneigh.c ipneigh: neigh get support 2019-10-01 08:23:43 -07:00
ipnetconf.c ip: ipnetconf: Convert to use print_on_off() 2020-11-24 21:43:34 -07:00
ipnetns.c ip/netns: use flock when setting up /run/netns 2020-12-03 08:31:23 -08:00
ipnexthop.c nexthop: Fix usage output 2021-01-10 17:14:08 +00:00
ipntable.c ipntable: add missing ndts_table_fulls ntable stat 2020-10-06 15:07:10 -07:00
ipprefix.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
iproute.c ip route: Print "trap" nexthop indication 2020-11-22 12:42:20 -07:00
iproute_lwtunnel.c seg6: add support for vrftable attribute in SRv6 End.DT4/DT6 behaviors 2020-12-09 02:27:42 +00:00
iprule.c iprule: always print realms keyword for rule 2019-04-24 15:06:15 -07:00
ipseg6.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
iptoken.c ip/iptoken: fix dump error when ipv6 disabled 2019-06-26 14:23:12 -07:00
iptunnel.c ip tunnel: add json output 2019-08-07 12:00:58 -07:00
iptuntap.c ip: iptuntap: Convert to use print_on_off() 2020-11-24 21:43:41 -07:00
ipvrf.c lib: make ipvrf able to use libbpf and fix function name conflicts 2020-11-24 22:14:04 -07:00
ipxfrm.c ip xfrm: support printing XFRMA_SET_MARK_MASK attribute in states 2020-09-01 19:49:29 -06:00
link_gre.c erspan: Add type I version 0 support. 2020-04-30 02:40:10 +00:00
link_gre6.c erspan: Add type I version 0 support. 2020-04-30 02:40:10 +00:00
link_ip6tnl.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_iptnl.c treewide: refactor help messages 2019-05-20 14:35:07 -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 treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_vti6.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_xfrm.c ip: xfrm if_id -ve value is error 2019-12-25 12:38:13 -08: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 ip: add a new parameter -Numeric 2019-06-18 08:37:47 -07:00
rtmon.c replace SNAPSHOT with auto-generated version string 2020-08-03 10:02:47 -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 treewide: refactor help messages 2019-05-20 14:35:07 -07:00
tunnel.c ip tunnel: add json output 2019-08-07 12:00:58 -07:00
tunnel.h tunnel: factorize printout of GRE key and flags 2019-07-18 10:19:47 -07:00
xfrm.h xfrm: add option to hide keys in state output 2019-01-21 08:31:20 -08:00
xfrm_monitor.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
xfrm_policy.c ip xfrm: policy: support policies with IF_ID in get/delete/deleteall 2020-07-13 08:51:37 -07:00
xfrm_state.c ip xfrm: support setting XFRMA_SET_MARK_MASK attribute in states 2020-10-07 00:10:47 -06:00