diff -urNb quagga-0.96.5/lib/sockunion.h quagga-0.96.5-fbsd22/lib/sockunion.h --- quagga-0.96.5/lib/sockunion.h Sat Dec 14 01:15:29 2002 +++ quagga-0.96.5-fbsd22/lib/sockunion.h Wed Aug 25 16:06:13 2004 @@ -125,4 +125,30 @@ inet_aton (const char *cp, struct in_addr *inaddr); #endif +/* + * Data types. + */ +typedef u_char sa_family_t; +#ifdef _BSD_SOCKLEN_T_ +typedef _BSD_SOCKLEN_T_ socklen_t; +#undef _BSD_SOCKLEN_T_ +#endif + +/* + * RFC 2553: protocol-independent placeholder for socket addresses + */ +#define _SS_MAXSIZE 128 +#define _SS_ALIGNSIZE (sizeof(int64_t)) +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(u_char) - sizeof(sa_family_t)) +#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(u_char) - sizeof(sa_family_t) - \ + _SS_PAD1SIZE - _SS_ALIGNSIZE) + +struct sockaddr_storage { + u_char ss_len; /* address length */ + sa_family_t ss_family; /* address family */ + char __ss_pad1[_SS_PAD1SIZE]; + int64_t __ss_align; /* force desired structure storage alignment */ + char __ss_pad2[_SS_PAD2SIZE]; +}; + #endif /* _ZEBRA_SOCKUNION_H */