root/include/net/bond_options.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. __bond_opt_init

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * drivers/net/bond/bond_options.h - bonding options
   4  * Copyright (c) 2013 Nikolay Aleksandrov <nikolay@redhat.com>
   5  */
   6 
   7 #ifndef _NET_BOND_OPTIONS_H
   8 #define _NET_BOND_OPTIONS_H
   9 
  10 #define BOND_OPT_MAX_NAMELEN 32
  11 #define BOND_OPT_VALID(opt) ((opt) < BOND_OPT_LAST)
  12 #define BOND_MODE_ALL_EX(x) (~(x))
  13 
  14 /* Option flags:
  15  * BOND_OPTFLAG_NOSLAVES - check if the bond device is empty before setting
  16  * BOND_OPTFLAG_IFDOWN - check if the bond device is down before setting
  17  * BOND_OPTFLAG_RAWVAL - the option parses the value itself
  18  */
  19 enum {
  20         BOND_OPTFLAG_NOSLAVES   = BIT(0),
  21         BOND_OPTFLAG_IFDOWN     = BIT(1),
  22         BOND_OPTFLAG_RAWVAL     = BIT(2)
  23 };
  24 
  25 /* Value type flags:
  26  * BOND_VALFLAG_DEFAULT - mark the value as default
  27  * BOND_VALFLAG_(MIN|MAX) - mark the value as min/max
  28  */
  29 enum {
  30         BOND_VALFLAG_DEFAULT    = BIT(0),
  31         BOND_VALFLAG_MIN        = BIT(1),
  32         BOND_VALFLAG_MAX        = BIT(2)
  33 };
  34 
  35 /* Option IDs, their bit positions correspond to their IDs */
  36 enum {
  37         BOND_OPT_MODE,
  38         BOND_OPT_PACKETS_PER_SLAVE,
  39         BOND_OPT_XMIT_HASH,
  40         BOND_OPT_ARP_VALIDATE,
  41         BOND_OPT_ARP_ALL_TARGETS,
  42         BOND_OPT_FAIL_OVER_MAC,
  43         BOND_OPT_ARP_INTERVAL,
  44         BOND_OPT_ARP_TARGETS,
  45         BOND_OPT_DOWNDELAY,
  46         BOND_OPT_UPDELAY,
  47         BOND_OPT_LACP_RATE,
  48         BOND_OPT_MINLINKS,
  49         BOND_OPT_AD_SELECT,
  50         BOND_OPT_NUM_PEER_NOTIF,
  51         BOND_OPT_MIIMON,
  52         BOND_OPT_PRIMARY,
  53         BOND_OPT_PRIMARY_RESELECT,
  54         BOND_OPT_USE_CARRIER,
  55         BOND_OPT_ACTIVE_SLAVE,
  56         BOND_OPT_QUEUE_ID,
  57         BOND_OPT_ALL_SLAVES_ACTIVE,
  58         BOND_OPT_RESEND_IGMP,
  59         BOND_OPT_LP_INTERVAL,
  60         BOND_OPT_SLAVES,
  61         BOND_OPT_TLB_DYNAMIC_LB,
  62         BOND_OPT_AD_ACTOR_SYS_PRIO,
  63         BOND_OPT_AD_ACTOR_SYSTEM,
  64         BOND_OPT_AD_USER_PORT_KEY,
  65         BOND_OPT_NUM_PEER_NOTIF_ALIAS,
  66         BOND_OPT_PEER_NOTIF_DELAY,
  67         BOND_OPT_LAST
  68 };
  69 
  70 /* This structure is used for storing option values and for passing option
  71  * values when changing an option. The logic when used as an arg is as follows:
  72  * - if string != NULL -> parse it, if the opt is RAW type then return it, else
  73  *   return the parse result
  74  * - if string == NULL -> parse value
  75  */
  76 struct bond_opt_value {
  77         char *string;
  78         u64 value;
  79         u32 flags;
  80 };
  81 
  82 struct bonding;
  83 
  84 struct bond_option {
  85         int id;
  86         const char *name;
  87         const char *desc;
  88         u32 flags;
  89 
  90         /* unsuppmodes is used to denote modes in which the option isn't
  91          * supported.
  92          */
  93         unsigned long unsuppmodes;
  94         /* supported values which this option can have, can be a subset of
  95          * BOND_OPTVAL_RANGE's value range
  96          */
  97         const struct bond_opt_value *values;
  98 
  99         int (*set)(struct bonding *bond, const struct bond_opt_value *val);
 100 };
 101 
 102 int __bond_opt_set(struct bonding *bond, unsigned int option,
 103                    struct bond_opt_value *val);
 104 int __bond_opt_set_notify(struct bonding *bond, unsigned int option,
 105                           struct bond_opt_value *val);
 106 int bond_opt_tryset_rtnl(struct bonding *bond, unsigned int option, char *buf);
 107 
 108 const struct bond_opt_value *bond_opt_parse(const struct bond_option *opt,
 109                                             struct bond_opt_value *val);
 110 const struct bond_option *bond_opt_get(unsigned int option);
 111 const struct bond_option *bond_opt_get_by_name(const char *name);
 112 const struct bond_opt_value *bond_opt_get_val(unsigned int option, u64 val);
 113 
 114 /* This helper is used to initialize a bond_opt_value structure for parameter
 115  * passing. There should be either a valid string or value, but not both.
 116  * When value is ULLONG_MAX then string will be used.
 117  */
 118 static inline void __bond_opt_init(struct bond_opt_value *optval,
 119                                    char *string, u64 value)
 120 {
 121         memset(optval, 0, sizeof(*optval));
 122         optval->value = ULLONG_MAX;
 123         if (value == ULLONG_MAX)
 124                 optval->string = string;
 125         else
 126                 optval->value = value;
 127 }
 128 #define bond_opt_initval(optval, value) __bond_opt_init(optval, NULL, value)
 129 #define bond_opt_initstr(optval, str) __bond_opt_init(optval, str, ULLONG_MAX)
 130 
 131 void bond_option_arp_ip_targets_clear(struct bonding *bond);
 132 
 133 #endif /* _NET_BOND_OPTIONS_H */

/* [<][>][^][v][top][bottom][index][help] */