Blame view

include/net/bond_options.h 3.82 KB
091173624   Nikolay Aleksandrov   bonding: add infr...
1
2
3
4
5
6
7
8
9
  /*
   * drivers/net/bond/bond_options.h - bonding options
   * Copyright (c) 2013 Nikolay Aleksandrov <nikolay@redhat.com>
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   */
1ef8019be   David S. Miller   net: Move bonding...
10
11
  #ifndef _NET_BOND_OPTIONS_H
  #define _NET_BOND_OPTIONS_H
091173624   Nikolay Aleksandrov   bonding: add infr...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  
  #define BOND_OPT_MAX_NAMELEN 32
  #define BOND_OPT_VALID(opt) ((opt) < BOND_OPT_LAST)
  #define BOND_MODE_ALL_EX(x) (~(x))
  
  /* Option flags:
   * BOND_OPTFLAG_NOSLAVES - check if the bond device is empty before setting
   * BOND_OPTFLAG_IFDOWN - check if the bond device is down before setting
   * BOND_OPTFLAG_RAWVAL - the option parses the value itself
   */
  enum {
  	BOND_OPTFLAG_NOSLAVES	= BIT(0),
  	BOND_OPTFLAG_IFDOWN	= BIT(1),
  	BOND_OPTFLAG_RAWVAL	= BIT(2)
  };
  
  /* Value type flags:
   * BOND_VALFLAG_DEFAULT - mark the value as default
   * BOND_VALFLAG_(MIN|MAX) - mark the value as min/max
   */
  enum {
  	BOND_VALFLAG_DEFAULT	= BIT(0),
  	BOND_VALFLAG_MIN	= BIT(1),
  	BOND_VALFLAG_MAX	= BIT(2)
  };
  
  /* Option IDs, their bit positions correspond to their IDs */
  enum {
2b3798d5e   Nikolay Aleksandrov   bonding: convert ...
40
  	BOND_OPT_MODE,
aa59d8517   Nikolay Aleksandrov   bonding: convert ...
41
  	BOND_OPT_PACKETS_PER_SLAVE,
a4b32ce7f   Nikolay Aleksandrov   bonding: convert ...
42
  	BOND_OPT_XMIT_HASH,
162288810   Nikolay Aleksandrov   bonding: convert ...
43
  	BOND_OPT_ARP_VALIDATE,
edf36b24c   Nikolay Aleksandrov   bonding: convert ...
44
  	BOND_OPT_ARP_ALL_TARGETS,
1df6b6aa3   Nikolay Aleksandrov   bonding: convert ...
45
  	BOND_OPT_FAIL_OVER_MAC,
7bdb04ed0   Nikolay Aleksandrov   bonding: convert ...
46
  	BOND_OPT_ARP_INTERVAL,
4fb0ef585   Nikolay Aleksandrov   bonding: convert ...
47
  	BOND_OPT_ARP_TARGETS,
25a9b54a4   Nikolay Aleksandrov   bonding: convert ...
48
  	BOND_OPT_DOWNDELAY,
e49946127   Nikolay Aleksandrov   bonding: convert ...
49
  	BOND_OPT_UPDELAY,
d3131de76   Nikolay Aleksandrov   bonding: convert ...
50
  	BOND_OPT_LACP_RATE,
633ddc9e9   Nikolay Aleksandrov   bonding: convert ...
51
  	BOND_OPT_MINLINKS,
9e5f5eebe   Nikolay Aleksandrov   bonding: convert ...
52
  	BOND_OPT_AD_SELECT,
ef56becbb   Nikolay Aleksandrov   bonding: convert ...
53
  	BOND_OPT_NUM_PEER_NOTIF,
b98d9c66e   Nikolay Aleksandrov   bonding: convert ...
54
  	BOND_OPT_MIIMON,
180222f08   Nikolay Aleksandrov   bonding: convert ...
55
  	BOND_OPT_PRIMARY,
388d3a6d4   Nikolay Aleksandrov   bonding: convert ...
56
  	BOND_OPT_PRIMARY_RESELECT,
0fff06087   Nikolay Aleksandrov   bonding: convert ...
57
  	BOND_OPT_USE_CARRIER,
d1fbd3ed9   Nikolay Aleksandrov   bonding: convert ...
58
  	BOND_OPT_ACTIVE_SLAVE,
24089ba10   Nikolay Aleksandrov   bonding: convert ...
59
  	BOND_OPT_QUEUE_ID,
3df011625   Nikolay Aleksandrov   bonding: convert ...
60
  	BOND_OPT_ALL_SLAVES_ACTIVE,
105c8fb6c   Nikolay Aleksandrov   bonding: convert ...
61
  	BOND_OPT_RESEND_IGMP,
4325b374f   Nikolay Aleksandrov   bonding: convert ...
62
  	BOND_OPT_LP_INTERVAL,
0e2e5b66e   Nikolay Aleksandrov   bonding: convert ...
63
  	BOND_OPT_SLAVES,
e9f0fb884   Mahesh Bandewar   bonding: Add tlb_...
64
  	BOND_OPT_TLB_DYNAMIC_LB,
6791e4661   Mahesh Bandewar   bonding: Allow us...
65
  	BOND_OPT_AD_ACTOR_SYS_PRIO,
745149575   Mahesh Bandewar   bonding: Allow us...
66
  	BOND_OPT_AD_ACTOR_SYSTEM,
d22a5fc0c   Mahesh Bandewar   bonding: Implemen...
67
  	BOND_OPT_AD_USER_PORT_KEY,
205845a34   Nikolay Aleksandrov   bonding: convert ...
68
  	BOND_OPT_NUM_PEER_NOTIF_ALIAS,
091173624   Nikolay Aleksandrov   bonding: add infr...
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  	BOND_OPT_LAST
  };
  
  /* This structure is used for storing option values and for passing option
   * values when changing an option. The logic when used as an arg is as follows:
   * - if string != NULL -> parse it, if the opt is RAW type then return it, else
   *   return the parse result
   * - if string == NULL -> parse value
   */
  struct bond_opt_value {
  	char *string;
  	u64 value;
  	u32 flags;
  };
  
  struct bonding;
  
  struct bond_option {
  	int id;
f3253339a   stephen hemminger   bonding: options ...
88
89
  	const char *name;
  	const char *desc;
091173624   Nikolay Aleksandrov   bonding: add infr...
90
91
92
93
94
95
96
97
98
  	u32 flags;
  
  	/* unsuppmodes is used to denote modes in which the option isn't
  	 * supported.
  	 */
  	unsigned long unsuppmodes;
  	/* supported values which this option can have, can be a subset of
  	 * BOND_OPTVAL_RANGE's value range
  	 */
f3253339a   stephen hemminger   bonding: options ...
99
  	const struct bond_opt_value *values;
091173624   Nikolay Aleksandrov   bonding: add infr...
100

28f084cca   stephen hemminger   bonding: fix cons...
101
  	int (*set)(struct bonding *bond, const struct bond_opt_value *val);
091173624   Nikolay Aleksandrov   bonding: add infr...
102
103
104
105
106
  };
  
  int __bond_opt_set(struct bonding *bond, unsigned int option,
  		   struct bond_opt_value *val);
  int bond_opt_tryset_rtnl(struct bonding *bond, unsigned int option, char *buf);
28f084cca   stephen hemminger   bonding: fix cons...
107

f3253339a   stephen hemminger   bonding: options ...
108
  const struct bond_opt_value *bond_opt_parse(const struct bond_option *opt,
28f084cca   stephen hemminger   bonding: fix cons...
109
  					    struct bond_opt_value *val);
f3253339a   stephen hemminger   bonding: options ...
110
  const struct bond_option *bond_opt_get(unsigned int option);
dc3e5d18f   Nikolay Aleksandrov   bonding: make a g...
111
  const struct bond_option *bond_opt_get_by_name(const char *name);
f3253339a   stephen hemminger   bonding: options ...
112
  const struct bond_opt_value *bond_opt_get_val(unsigned int option, u64 val);
091173624   Nikolay Aleksandrov   bonding: add infr...
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
  
  /* This helper is used to initialize a bond_opt_value structure for parameter
   * passing. There should be either a valid string or value, but not both.
   * When value is ULLONG_MAX then string will be used.
   */
  static inline void __bond_opt_init(struct bond_opt_value *optval,
  				   char *string, u64 value)
  {
  	memset(optval, 0, sizeof(*optval));
  	optval->value = ULLONG_MAX;
  	if (value == ULLONG_MAX)
  		optval->string = string;
  	else
  		optval->value = value;
  }
  #define bond_opt_initval(optval, value) __bond_opt_init(optval, NULL, value)
  #define bond_opt_initstr(optval, str) __bond_opt_init(optval, str, ULLONG_MAX)
2b3798d5e   Nikolay Aleksandrov   bonding: convert ...
130

4fb0ef585   Nikolay Aleksandrov   bonding: convert ...
131
  void bond_option_arp_ip_targets_clear(struct bonding *bond);
f3253339a   stephen hemminger   bonding: options ...
132

1ef8019be   David S. Miller   net: Move bonding...
133
  #endif /* _NET_BOND_OPTIONS_H */