Subversion Repositories shark

Rev

Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
/*
2
 * Equalizer Load-balancer for serial network interfaces.
3
 *
4
 * (c) Copyright 1995 Simon "Guru Aleph-Null" Janes
5
 * NCM: Network and Communications Management, Inc.
6
 *
7
 *
8
 *      This software may be used and distributed according to the terms
9
 *      of the GNU General Public License, incorporated herein by reference.
10
 *
11
 * The author may be reached as simon@ncm.com, or C/O
12
 *    NCM
13
 *    Attn: Simon Janes
14
 *    6803 Whittier Ave
15
 *    McLean VA 22101
16
 *    Phone: 1-703-847-0040 ext 103
17
 */
18
 
19
#ifndef _LINUX_IF_EQL_H
20
#define _LINUX_IF_EQL_H
21
 
22
#define EQL_DEFAULT_SLAVE_PRIORITY 28800
23
#define EQL_DEFAULT_MAX_SLAVES     4
24
#define EQL_DEFAULT_MTU            576
25
#define EQL_DEFAULT_RESCHED_IVAL   100
26
 
27
#define EQL_ENSLAVE     (SIOCDEVPRIVATE)
28
#define EQL_EMANCIPATE  (SIOCDEVPRIVATE + 1)
29
 
30
#define EQL_GETSLAVECFG (SIOCDEVPRIVATE + 2)
31
#define EQL_SETSLAVECFG (SIOCDEVPRIVATE + 3)
32
 
33
#define EQL_GETMASTRCFG (SIOCDEVPRIVATE + 4)
34
#define EQL_SETMASTRCFG (SIOCDEVPRIVATE + 5)
35
 
36
#ifdef __KERNEL__
37
 
38
#include <linux/timer.h>
39
#include <linux/spinlock.h>
40
 
41
typedef struct slave {
42
        struct list_head        list;
43
        struct net_device       *dev;
44
        long                    priority;
45
        long                    priority_bps;
46
        long                    priority_Bps;
47
        long                    bytes_queued;
48
} slave_t;
49
 
50
typedef struct slave_queue {
51
        spinlock_t              lock;
52
        struct list_head        all_slaves;
53
        int                     num_slaves;
54
        struct net_device       *master_dev;
55
} slave_queue_t;
56
 
57
typedef struct equalizer {
58
        slave_queue_t           queue;
59
        int                     min_slaves;
60
        int                     max_slaves;
61
        struct net_device_stats stats;
62
        struct timer_list       timer;
63
} equalizer_t;  
64
 
65
#endif /* __KERNEL__ */
66
 
67
typedef struct master_config {
68
        char    master_name[16];
69
        int     max_slaves;
70
        int     min_slaves;
71
} master_config_t;
72
 
73
typedef struct slave_config {
74
        char    slave_name[16];
75
        long    priority;
76
} slave_config_t;
77
 
78
typedef struct slaving_request {
79
        char    slave_name[16];
80
        long    priority;
81
} slaving_request_t;
82
 
83
 
84
#endif /* _LINUX_EQL_H */