63#if BYTE_ORDER == LITTLE_ENDIAN
67#if BYTE_ORDER == BIG_ENDIAN
85#define CARP_DFLTTL 255
91#define CARP_ADVERTISEMENT 0x01
93#define CARP_KEY_LEN 20
96#define CARP_DFLTINTV 1
128#define CARP_MAXVHID 255
130#define CARP_STATES "INIT", "BACKUP", "MASTER"
131#define CARP_MAXSTATE 2
133#define CARP_MAXSKEW 240
137#define SIOCSVH _IOWR('i', 245, struct ifreq)
138#define SIOCGVH _IOWR('i', 246, struct ifreq)
141int carp_ioctl(
struct ifreq *, u_long,
struct thread *);
148 const struct sockaddr *);
157extern int (*
carp_ioctl_p)(
struct ifreq *, u_long,
struct thread *);
167 const struct sockaddr *);
172extern int (*carp_iamatch_p)(
struct ifaddr *,
uint8_t **);
176extern struct ifaddr *(*carp_iamatch6_p)(
struct ifnet *,
struct in6_addr *);
177extern char * (*carp_macmatch6_p)(
struct ifnet *,
struct mbuf *,
178 const struct in6_addr *);
CTASSERT(DXR_TRIE_BITS >=16 &&DXR_TRIE_BITS<=24)
int carp_iamatch(struct ifaddr *, uint8_t **)
int(* carp_output_p)(struct ifnet *, struct mbuf *, const struct sockaddr *)
void carp_carpdev_state(struct ifnet *)
int carp_forus(struct ifnet *, u_char *)
int carp_input(struct mbuf **, int *, int)
int(* carp_ioctl_p)(struct ifreq *, u_long, struct thread *)
int carp_master(struct ifaddr *)
int(* carp_get_vhid_p)(struct ifaddr *)
int(* carp_master_p)(struct ifaddr *)
void carp_detach(struct ifaddr *, bool)
void(* carp_linkstate_p)(struct ifnet *)
int carp_ioctl(struct ifreq *, u_long, struct thread *)
int carp_output(struct ifnet *, struct mbuf *, const struct sockaddr *)
struct carp_header __packed
char * carp_macmatch6(struct ifnet *, struct mbuf *, const struct in6_addr *)
void(* carp_demote_adj_p)(int, char *)
int carp_attach(struct ifaddr *, int)
void(* carp_detach_p)(struct ifaddr *, bool)
int carp6_input(struct mbuf **, int *, int)
struct ifaddr * carp_iamatch6(struct ifnet *, struct in6_addr *)
int(* carp_forus_p)(struct ifnet *, u_char *)
int(* carp_attach_p)(struct ifaddr *, int)
unsigned char carpr_key[CARP_KEY_LEN]