17
17
* as published by the Free Software Foundation; either version
18
18
* 2 of the License, or (at your option) any later version.
20
* Copyright (C) 2001-2010 Alexandre Cassen, <acassen@freebox.fr>
20
* Copyright (C) 2001-2011 Alexandre Cassen, <acassen@linux-vs.org>
73
73
/* Interface structure definition */
74
74
typedef struct _interface {
75
75
char ifname[IF_NAMESIZ + 1]; /* Interface name */
76
unsigned int ifindex; /* Interface index */
77
uint32_t address; /* Interface main primary IP address */
78
unsigned long flags; /* flags */
79
unsigned int mtu; /* MTU for this interface */
80
unsigned short hw_type; /* Type of hardware address */
76
unsigned int ifindex; /* Interface index */
77
struct in_addr sin_addr; /* IPv4 primary IPv4 address */
78
struct in6_addr sin6_addr; /* IPv6 link address */
79
unsigned long flags; /* flags */
80
unsigned int mtu; /* MTU for this interface */
81
unsigned short hw_type; /* Type of hardware address */
81
82
u_char hw_addr[IF_HWADDR_MAX]; /* MAC address */
82
int hw_addr_len; /* MAC addresss length */
83
int lb_type; /* Interface regs selection */
84
int linkbeat; /* LinkBeat from MII BMSR req */
83
int hw_addr_len; /* MAC addresss length */
84
int lb_type; /* Interface regs selection */
85
int linkbeat; /* LinkBeat from MII BMSR req */
87
88
/* Tracked interface structure definition */
94
95
#define IF_NAME(X) ((X)->ifname)
95
96
#define IF_INDEX(X) ((X)->ifindex)
96
#define IF_ADDR(X) ((X)->address)
97
#define IF_ADDR(X) ((X)->sin_addr.s_addr)
97
98
#define IF_MTU(X) ((X)->mtu)
98
99
#define IF_HWADDR(X) ((X)->hw_addr)
99
100
#define IF_MII_SUPPORTED(X) ((X)->lb_type & LB_MII)
107
extern interface *if_get_by_ifindex(const int ifindex);
108
extern interface *if_get_by_ifname(const char *ifname);
109
extern int if_linkbeat(const interface *ifp);
110
extern int if_mii_probe(const char *ifname);
111
extern int if_ethtool_probe(const char *ifname);
112
extern void if_add_queue(interface * ifp);
113
extern int if_monitor_thread(thread * thread_obj);
108
extern interface *if_get_by_ifindex(const int);
109
extern interface *if_get_by_ifname(const char *);
110
extern int if_linkbeat(const interface *);
111
extern int if_mii_probe(const char *);
112
extern int if_ethtool_probe(const char *);
113
extern void if_add_queue(interface *);
114
extern int if_monitor_thread(thread_t *);
114
115
extern void init_interface_queue(void);
115
116
extern void init_interface_linkbeat(void);
116
117
extern void free_interface_queue(void);
117
extern void dump_if(void *if_data_obj);
118
extern int if_join_vrrp_group(int sd, interface * ifp, int proto);
119
extern void if_leave_vrrp_group(int sd, interface * ifp);
120
extern int if_setsockopt_bindtodevice(int sd, interface * ifp);
121
extern int if_setsockopt_hdrincl(int sd);
122
extern int if_setsockopt_mcast_loop(int sd);
118
extern void dump_if(void *);
119
extern int if_join_vrrp_group(sa_family_t, int *, interface *, int);
120
extern int if_leave_vrrp_group(sa_family_t, int, interface *);
121
extern int if_setsockopt_bindtodevice(int *, interface *);
122
extern int if_setsockopt_hdrincl(int *);
123
extern int if_setsockopt_mcast_loop(sa_family_t, int *);
124
extern int if_setsockopt_mcast_hops(sa_family_t, int *);
125
extern int if_setsockopt_mcast_if(sa_family_t, int *, interface *);