LCOV - code coverage report
Current view: top level - network/netdev - bond.h (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 0 1 0.0 %
Date: 2019-08-22 15:41:25 Functions: 0 1 0.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: LGPL-2.1+ */
       2             : #pragma once
       3             : 
       4             : #include <netinet/in.h>
       5             : #include <linux/if_bonding.h>
       6             : 
       7             : #include "in-addr-util.h"
       8             : #include "netdev.h"
       9             : #include "ordered-set.h"
      10             : 
      11             : /*
      12             :  * Maximum number of targets supported by the kernel for a single
      13             :  * bond netdev.
      14             :  */
      15             : #define NETDEV_BOND_ARP_TARGETS_MAX 16
      16             : 
      17             : typedef enum BondMode {
      18             :         NETDEV_BOND_MODE_BALANCE_RR    = BOND_MODE_ROUNDROBIN,
      19             :         NETDEV_BOND_MODE_ACTIVE_BACKUP = BOND_MODE_ACTIVEBACKUP,
      20             :         NETDEV_BOND_MODE_BALANCE_XOR   = BOND_MODE_XOR,
      21             :         NETDEV_BOND_MODE_BROADCAST     = BOND_MODE_BROADCAST,
      22             :         NETDEV_BOND_MODE_802_3AD       = BOND_MODE_8023AD,
      23             :         NETDEV_BOND_MODE_BALANCE_TLB   = BOND_MODE_TLB,
      24             :         NETDEV_BOND_MODE_BALANCE_ALB   = BOND_MODE_ALB,
      25             :         _NETDEV_BOND_MODE_MAX,
      26             :         _NETDEV_BOND_MODE_INVALID      = -1
      27             : } BondMode;
      28             : 
      29             : typedef enum BondXmitHashPolicy {
      30             :         NETDEV_BOND_XMIT_HASH_POLICY_LAYER2   = BOND_XMIT_POLICY_LAYER2,
      31             :         NETDEV_BOND_XMIT_HASH_POLICY_LAYER34  = BOND_XMIT_POLICY_LAYER34,
      32             :         NETDEV_BOND_XMIT_HASH_POLICY_LAYER23  = BOND_XMIT_POLICY_LAYER23,
      33             :         NETDEV_BOND_XMIT_HASH_POLICY_ENCAP23  = BOND_XMIT_POLICY_ENCAP23,
      34             :         NETDEV_BOND_XMIT_HASH_POLICY_ENCAP34  = BOND_XMIT_POLICY_ENCAP34,
      35             :         _NETDEV_BOND_XMIT_HASH_POLICY_MAX,
      36             :         _NETDEV_BOND_XMIT_HASH_POLICY_INVALID = -1
      37             : } BondXmitHashPolicy;
      38             : 
      39             : typedef enum BondLacpRate {
      40             :         NETDEV_BOND_LACP_RATE_SLOW,
      41             :         NETDEV_BOND_LACP_RATE_FAST,
      42             :         _NETDEV_BOND_LACP_RATE_MAX,
      43             :         _NETDEV_BOND_LACP_RATE_INVALID = -1,
      44             : } BondLacpRate;
      45             : 
      46             : typedef enum BondAdSelect {
      47             :         NETDEV_BOND_AD_SELECT_STABLE,
      48             :         NETDEV_BOND_AD_SELECT_BANDWIDTH,
      49             :         NETDEV_BOND_AD_SELECT_COUNT,
      50             :         _NETDEV_BOND_AD_SELECT_MAX,
      51             :         _NETDEV_BOND_AD_SELECT_INVALID = -1,
      52             : } BondAdSelect;
      53             : 
      54             : typedef enum BondFailOverMac {
      55             :         NETDEV_BOND_FAIL_OVER_MAC_NONE,
      56             :         NETDEV_BOND_FAIL_OVER_MAC_ACTIVE,
      57             :         NETDEV_BOND_FAIL_OVER_MAC_FOLLOW,
      58             :         _NETDEV_BOND_FAIL_OVER_MAC_MAX,
      59             :         _NETDEV_BOND_FAIL_OVER_MAC_INVALID = -1,
      60             : } BondFailOverMac;
      61             : 
      62             : typedef enum BondArpValidate {
      63             :         NETDEV_BOND_ARP_VALIDATE_NONE,
      64             :         NETDEV_BOND_ARP_VALIDATE_ACTIVE,
      65             :         NETDEV_BOND_ARP_VALIDATE_BACKUP,
      66             :         NETDEV_BOND_ARP_VALIDATE_ALL,
      67             :         _NETDEV_BOND_ARP_VALIDATE_MAX,
      68             :         _NETDEV_BOND_ARP_VALIDATE_INVALID = -1,
      69             : } BondArpValidate;
      70             : 
      71             : typedef enum BondArpAllTargets {
      72             :         NETDEV_BOND_ARP_ALL_TARGETS_ANY,
      73             :         NETDEV_BOND_ARP_ALL_TARGETS_ALL,
      74             :         _NETDEV_BOND_ARP_ALL_TARGETS_MAX,
      75             :         _NETDEV_BOND_ARP_ALL_TARGETS_INVALID = -1,
      76             : } BondArpAllTargets;
      77             : 
      78             : typedef enum BondPrimaryReselect {
      79             :         NETDEV_BOND_PRIMARY_RESELECT_ALWAYS,
      80             :         NETDEV_BOND_PRIMARY_RESELECT_BETTER,
      81             :         NETDEV_BOND_PRIMARY_RESELECT_FAILURE,
      82             :         _NETDEV_BOND_PRIMARY_RESELECT_MAX,
      83             :         _NETDEV_BOND_PRIMARY_RESELECT_INVALID = -1,
      84             : } BondPrimaryReselect;
      85             : 
      86             : typedef struct Bond {
      87             :         NetDev meta;
      88             : 
      89             :         BondMode mode;
      90             :         BondXmitHashPolicy xmit_hash_policy;
      91             :         BondLacpRate lacp_rate;
      92             :         BondAdSelect ad_select;
      93             :         BondFailOverMac fail_over_mac;
      94             :         BondArpValidate arp_validate;
      95             :         BondArpAllTargets arp_all_targets;
      96             :         BondPrimaryReselect primary_reselect;
      97             : 
      98             :         int tlb_dynamic_lb;
      99             : 
     100             :         bool all_slaves_active;
     101             : 
     102             :         unsigned resend_igmp;
     103             :         unsigned packets_per_slave;
     104             :         unsigned num_grat_arp;
     105             :         unsigned min_links;
     106             : 
     107             :         uint16_t ad_actor_sys_prio;
     108             :         uint16_t ad_user_port_key;
     109             :         struct ether_addr ad_actor_system;
     110             : 
     111             :         usec_t miimon;
     112             :         usec_t updelay;
     113             :         usec_t downdelay;
     114             :         usec_t arp_interval;
     115             :         usec_t lp_interval;
     116             : 
     117             :         OrderedSet *arp_ip_targets;
     118             : } Bond;
     119             : 
     120           0 : DEFINE_NETDEV_CAST(BOND, Bond);
     121             : extern const NetDevVTable bond_vtable;
     122             : 
     123             : int link_set_bond(Link *link);
     124             : 
     125             : const char *bond_mode_to_string(BondMode d) _const_;
     126             : BondMode bond_mode_from_string(const char *d) _pure_;
     127             : 
     128             : const char *bond_xmit_hash_policy_to_string(BondXmitHashPolicy d) _const_;
     129             : BondXmitHashPolicy bond_xmit_hash_policy_from_string(const char *d) _pure_;
     130             : 
     131             : const char *bond_lacp_rate_to_string(BondLacpRate d) _const_;
     132             : BondLacpRate bond_lacp_rate_from_string(const char *d) _pure_;
     133             : 
     134             : const char *bond_fail_over_mac_to_string(BondFailOverMac d) _const_;
     135             : BondFailOverMac bond_fail_over_mac_from_string(const char *d) _pure_;
     136             : 
     137             : const char *bond_ad_select_to_string(BondAdSelect d) _const_;
     138             : BondAdSelect bond_ad_select_from_string(const char *d) _pure_;
     139             : 
     140             : const char *bond_arp_validate_to_string(BondArpValidate d) _const_;
     141             : BondArpValidate bond_arp_validate_from_string(const char *d) _pure_;
     142             : 
     143             : const char *bond_arp_all_targets_to_string(BondArpAllTargets d) _const_;
     144             : BondArpAllTargets bond_arp_all_targets_from_string(const char *d) _pure_;
     145             : 
     146             : const char *bond_primary_reselect_to_string(BondPrimaryReselect d) _const_;
     147             : BondPrimaryReselect bond_primary_reselect_from_string(const char *d) _pure_;
     148             : 
     149             : CONFIG_PARSER_PROTOTYPE(config_parse_bond_mode);
     150             : CONFIG_PARSER_PROTOTYPE(config_parse_bond_xmit_hash_policy);
     151             : CONFIG_PARSER_PROTOTYPE(config_parse_bond_lacp_rate);
     152             : CONFIG_PARSER_PROTOTYPE(config_parse_bond_ad_select);
     153             : CONFIG_PARSER_PROTOTYPE(config_parse_bond_fail_over_mac);
     154             : CONFIG_PARSER_PROTOTYPE(config_parse_bond_arp_validate);
     155             : CONFIG_PARSER_PROTOTYPE(config_parse_bond_arp_all_targets);
     156             : CONFIG_PARSER_PROTOTYPE(config_parse_bond_primary_reselect);
     157             : CONFIG_PARSER_PROTOTYPE(config_parse_arp_ip_target_address);
     158             : CONFIG_PARSER_PROTOTYPE(config_parse_ad_actor_sys_prio);
     159             : CONFIG_PARSER_PROTOTYPE(config_parse_ad_user_port_key);
     160             : CONFIG_PARSER_PROTOTYPE(config_parse_ad_actor_system);

Generated by: LCOV version 1.14