~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/net/bond_options.h

Version: ~ [ linux-5.5-rc7 ] ~ [ linux-5.4.13 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.97 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.166 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.210 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.210 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.81 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp