X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=lib%2Fsockunion.h;h=3af3d78059095b0c37ecd5f12fc3b323339c6e5a;hb=7caef08c842f616c65bf2d30b622828507fb2db1;hp=e66b0b8e83d6674cc10a7b9810c80b7cbb004233;hpb=7cb5cdbb346504cac853499b2977b47c34ea0a43;p=mirror_frr.git diff --git a/lib/sockunion.h b/lib/sockunion.h index e66b0b8e8..3af3d7805 100644 --- a/lib/sockunion.h +++ b/lib/sockunion.h @@ -24,29 +24,19 @@ #define _ZEBRA_SOCKUNION_H #include "privs.h" - -#if 0 -union sockunion { - struct sockinet { - u_char si_len; - u_char si_family; - u_short si_port; - } su_si; - struct sockaddr_in su_sin; - struct sockaddr_in6 su_sin6; -}; -#define su_len su_si.si_len -#define su_family su_si.si_family -#define su_port su_si.si_port -#endif /* 0 */ +#include "if.h" +#ifdef __OpenBSD__ +#include +#endif union sockunion { struct sockaddr sa; struct sockaddr_in sin; -#ifdef HAVE_IPV6 struct sockaddr_in6 sin6; -#endif /* HAVE_IPV6 */ +#ifdef __OpenBSD__ + struct sockaddr_mpls smpls; +#endif }; enum connect_result @@ -86,11 +76,16 @@ enum connect_result /* Prototypes. */ extern int str2sockunion (const char *, union sockunion *); -extern const char *sockunion2str (union sockunion *, char *, size_t); -extern int sockunion_cmp (union sockunion *, union sockunion *); +extern const char *sockunion2str (const union sockunion *, char *, size_t); +extern int sockunion_cmp (const union sockunion *, const union sockunion *); extern int sockunion_same (const union sockunion *, const union sockunion *); extern unsigned int sockunion_hash (const union sockunion *); +extern size_t family2addrsize(int family); +extern size_t sockunion_get_addrlen(const union sockunion *); +extern const u_char *sockunion_get_addr(const union sockunion *); +extern void sockunion_set(union sockunion *, int family, const u_char *addr, size_t bytes); + extern union sockunion *sockunion_str2su (const char *str); extern int sockunion_accept (int sock, union sockunion *); extern int sockunion_stream_socket (union sockunion *); @@ -103,27 +98,15 @@ extern int sockopt_ttl (int family, int sock, int ttl); extern int sockopt_minttl (int family, int sock, int minttl); extern int sockopt_cork (int sock, int onoff); extern int sockopt_mark_default(int sock, int mark, struct zebra_privs_t *); -extern int sockunion_socket (union sockunion *su); -extern const char *inet_sutop (union sockunion *su, char *str); -extern enum connect_result sockunion_connect (int fd, union sockunion *su, +extern int sockunion_socket (const union sockunion *su); +extern const char *inet_sutop (const union sockunion *su, char *str); +extern enum connect_result sockunion_connect (int fd, const union sockunion *su, unsigned short port, - unsigned int); + ifindex_t); extern union sockunion *sockunion_getsockname (int); extern union sockunion *sockunion_getpeername (int); -extern union sockunion *sockunion_dup (union sockunion *); +extern union sockunion *sockunion_dup (const union sockunion *); extern void sockunion_free (union sockunion *); - -#ifndef HAVE_INET_NTOP -extern const char * inet_ntop (int family, const void *addrptr, - char *strptr, size_t len); -#endif /* HAVE_INET_NTOP */ - -#ifndef HAVE_INET_PTON -extern int inet_pton (int family, const char *strptr, void *addrptr); -#endif /* HAVE_INET_PTON */ - -#ifndef HAVE_INET_ATON -extern int inet_aton (const char *cp, struct in_addr *inaddr); -#endif +extern void sockunion_init (union sockunion *); #endif /* _ZEBRA_SOCKUNION_H */