Blame view

include/uapi/linux/if_bonding.h 4.11 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
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
  /*
   * Bond several ethernet interfaces into a Cisco, running 'Etherchannel'.
   *
   *
   * Portions are (c) Copyright 1995 Simon "Guru Aleph-Null" Janes
   * NCM: Network and Communications Management, Inc.
   *
   * BUT, I'm the one who modified it for ethernet, so:
   * (c) Copyright 1999, Thomas Davis, tadavis@lbl.gov
   *
   *	This software may be used and distributed according to the terms
   *	of the GNU Public License, incorporated herein by reference.
   *
   * 2003/03/18 - Amir Noam <amir.noam at intel dot com>
   *	- Added support for getting slave's speed and duplex via ethtool.
   *	  Needed for 802.3ad and other future modes.
   *
   * 2003/03/18 - Tsippy Mendelson <tsippy.mendelson at intel dot com> and
   *		Shmulik Hen <shmulik.hen at intel dot com>
   *	- Enable support of modes that need to use the unique mac address of
   *	  each slave.
   *
   * 2003/03/18 - Tsippy Mendelson <tsippy.mendelson at intel dot com> and
   *		Amir Noam <amir.noam at intel dot com>
   *	- Moved driver's private data types to bonding.h
   *
   * 2003/03/18 - Amir Noam <amir.noam at intel dot com>,
   *		Tsippy Mendelson <tsippy.mendelson at intel dot com> and
   *		Shmulik Hen <shmulik.hen at intel dot com>
   *	- Added support for IEEE 802.3ad Dynamic link aggregation mode.
   *
   * 2003/05/01 - Amir Noam <amir.noam at intel dot com>
   *	- Added ABI version control to restore compatibility between
   *	  new/old ifenslave and new/old bonding.
   *
   * 2003/12/01 - Shmulik Hen <shmulik.hen at intel dot com>
   *	- Code cleanup and style changes
169a3e666   Jay Vosburgh   bonding: xor/802....
38
39
40
   *
   * 2005/05/05 - Jason Gabler <jygabler at lbl dot gov>
   *      - added definitions for various XOR hashing policies
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
   */
  
  #ifndef _LINUX_IF_BONDING_H
  #define _LINUX_IF_BONDING_H
  
  #include <linux/if.h>
  #include <linux/types.h>
  #include <linux/if_ether.h>
  
  /* userland - kernel ABI version (2003/05/08) */
  #define BOND_ABI_VERSION 2
  
  /*
   * We can remove these ioctl definitions in 2.5.  People should use the
   * SIOC*** versions of them instead
   */
  #define BOND_ENSLAVE_OLD		(SIOCDEVPRIVATE)
  #define BOND_RELEASE_OLD		(SIOCDEVPRIVATE + 1)
  #define BOND_SETHWADDR_OLD		(SIOCDEVPRIVATE + 2)
  #define BOND_SLAVE_INFO_QUERY_OLD	(SIOCDEVPRIVATE + 11)
  #define BOND_INFO_QUERY_OLD		(SIOCDEVPRIVATE + 12)
  #define BOND_CHANGE_ACTIVE_OLD		(SIOCDEVPRIVATE + 13)
  
  #define BOND_CHECK_MII_STATUS	(SIOCGMIIPHY)
  
  #define BOND_MODE_ROUNDROBIN	0
  #define BOND_MODE_ACTIVEBACKUP	1
  #define BOND_MODE_XOR		2
  #define BOND_MODE_BROADCAST	3
  #define BOND_MODE_8023AD        4
  #define BOND_MODE_TLB           5
  #define BOND_MODE_ALB		6 /* TLB + RLB (receive load balancing) */
  
  /* each slave's link has 4 states */
  #define BOND_LINK_UP    0           /* link is up and running */
  #define BOND_LINK_FAIL  1           /* link has just gone down */
  #define BOND_LINK_DOWN  2           /* link has been down for too long time */
  #define BOND_LINK_BACK  3           /* link is going back */
  
  /* each slave has several states */
  #define BOND_STATE_ACTIVE       0   /* link is active */
  #define BOND_STATE_BACKUP       1   /* link is backup */
  
  #define BOND_DEFAULT_MAX_BONDS  1   /* Default maximum number of devices to support */
bb1d91232   Andy Gospodarek   bonding: allow us...
85
  #define BOND_DEFAULT_TX_QUEUES 16   /* Default number of tx queues per device */
c2952c314   Flavio Leitner   bonding: add retr...
86
87
  
  #define BOND_DEFAULT_RESEND_IGMP	1 /* Default number of IGMP membership reports */
169a3e666   Jay Vosburgh   bonding: xor/802....
88
89
  /* hashing types */
  #define BOND_XMIT_POLICY_LAYER2		0 /* layer 2 (MAC only), default */
6f6652be1   Jay Vosburgh   bonding: Add new ...
90
91
  #define BOND_XMIT_POLICY_LAYER34	1 /* layer 3+4 (IP ^ (TCP || UDP)) */
  #define BOND_XMIT_POLICY_LAYER23	2 /* layer 2+3 (IP ^ MAC) */
32819dc18   Nikolay Aleksandrov   bonding: modify t...
92
93
  #define BOND_XMIT_POLICY_ENCAP23	3 /* encapsulated layer 2+3 */
  #define BOND_XMIT_POLICY_ENCAP34	4 /* encapsulated layer 3+4 */
169a3e666   Jay Vosburgh   bonding: xor/802....
94

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
95
96
97
98
99
  typedef struct ifbond {
  	__s32 bond_mode;
  	__s32 num_slaves;
  	__s32 miimon;
  } ifbond;
d94d9fee9   Eric Dumazet   net: cleanup incl...
100
  typedef struct ifslave {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
  	__s32 slave_id; /* Used as an IN param to the BOND_SLAVE_INFO_QUERY ioctl */
  	char slave_name[IFNAMSIZ];
  	__s8 link;
  	__s8 state;
  	__u32  link_failure_count;
  } ifslave;
  
  struct ad_info {
  	__u16 aggregator_id;
  	__u16 ports;
  	__u16 actor_key;
  	__u16 partner_key;
  	__u8 partner_system[ETH_ALEN];
  };
  
  #endif /* _LINUX_IF_BONDING_H */
  
  /*
   * Local variables:
   *  version-control: t
   *  kept-new-versions: 5
   *  c-indent-level: 8
   *  c-basic-offset: 8
   *  tab-width: 8
   * End:
   */