#define _ZEBRA_SOCKUNION_H
#include "privs.h"
+#include "if.h"
+#ifdef __OpenBSD__
+#include <netmpls/mpls.h>
+#endif
union sockunion
{
struct sockaddr sa;
struct sockaddr_in sin;
struct sockaddr_in6 sin6;
+#ifdef __OpenBSD__
+ struct sockaddr_mpls smpls;
+#endif
};
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 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 *);
extern void sockunion_init (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
-
#endif /* _ZEBRA_SOCKUNION_H */