diff options
Diffstat (limited to 'sys/net/if_dl.h')
-rw-r--r-- | sys/net/if_dl.h | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/sys/net/if_dl.h b/sys/net/if_dl.h index e0ceb61741b3..082ea63f3ff3 100644 --- a/sys/net/if_dl.h +++ b/sys/net/if_dl.h @@ -34,6 +34,8 @@ #ifndef _NET_IF_DL_H_ #define _NET_IF_DL_H_ +#include <sys/_types.h> + /* * A Link-Level Sockaddr may specify the interface in one of two * ways: either by means of a system-provided index number (computed @@ -67,22 +69,26 @@ struct sockaddr_dl { contains both if name and ll address */ }; -#define LLADDR(s) ((caddr_t)((s)->sdl_data + (s)->sdl_nlen)) -#define CLLADDR(s) ((c_caddr_t)((s)->sdl_data + (s)->sdl_nlen)) +#define LLADDR(s) (&(s)->sdl_data[(s)->sdl_nlen]) +#define CLLADDR(s) ((const char *)LLADDR(s)) #define LLINDEX(s) ((s)->sdl_index) +#ifdef _KERNEL + struct ifnet; -struct sockaddr_dl *link_alloc_sdl(size_t, int); +struct sockaddr_dl *link_alloc_sdl(size_t size, int flags); void link_free_sdl(struct sockaddr *sa); -struct sockaddr_dl *link_init_sdl(struct ifnet *, struct sockaddr *, u_char); +struct sockaddr_dl *link_init_sdl(struct ifnet *ifp, struct sockaddr *paddr, + u_char iftypes); -#ifndef _KERNEL +#else /* !_KERNEL */ #include <sys/cdefs.h> __BEGIN_DECLS -void link_addr(const char *, struct sockaddr_dl *); +int link_addr(const char *, struct sockaddr_dl *); char *link_ntoa(const struct sockaddr_dl *); +int link_ntoa_r(const struct sockaddr_dl *, char *, size_t *); __END_DECLS #endif /* !_KERNEL */ |