xref: /dflybsd-src/contrib/wpa_supplicant/src/drivers/priv_netlink.h (revision 3a84a4273475ed07d0ab1c2dfeffdfedef35d9cd)
16d49e1aeSJan Lentfer /*
26d49e1aeSJan Lentfer  * wpa_supplicant - Private copy of Linux netlink/rtnetlink definitions.
36d49e1aeSJan Lentfer  * Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi>
46d49e1aeSJan Lentfer  *
53ff40c12SJohn Marino  * This software may be distributed under the terms of the BSD license.
63ff40c12SJohn Marino  * See README for more details.
76d49e1aeSJan Lentfer  */
86d49e1aeSJan Lentfer 
96d49e1aeSJan Lentfer #ifndef PRIV_NETLINK_H
106d49e1aeSJan Lentfer #define PRIV_NETLINK_H
116d49e1aeSJan Lentfer 
126d49e1aeSJan Lentfer /*
136d49e1aeSJan Lentfer  * This should be replaced with user space header once one is available with C
146d49e1aeSJan Lentfer  * library, etc..
156d49e1aeSJan Lentfer  */
166d49e1aeSJan Lentfer 
176d49e1aeSJan Lentfer #ifndef IFF_LOWER_UP
186d49e1aeSJan Lentfer #define IFF_LOWER_UP   0x10000         /* driver signals L1 up         */
196d49e1aeSJan Lentfer #endif
206d49e1aeSJan Lentfer #ifndef IFF_DORMANT
216d49e1aeSJan Lentfer #define IFF_DORMANT    0x20000         /* driver signals dormant       */
226d49e1aeSJan Lentfer #endif
236d49e1aeSJan Lentfer 
246d49e1aeSJan Lentfer #ifndef IFLA_IFNAME
256d49e1aeSJan Lentfer #define IFLA_IFNAME 3
266d49e1aeSJan Lentfer #endif
276d49e1aeSJan Lentfer #ifndef IFLA_WIRELESS
286d49e1aeSJan Lentfer #define IFLA_WIRELESS 11
296d49e1aeSJan Lentfer #endif
306d49e1aeSJan Lentfer #ifndef IFLA_OPERSTATE
316d49e1aeSJan Lentfer #define IFLA_OPERSTATE 16
326d49e1aeSJan Lentfer #endif
336d49e1aeSJan Lentfer #ifndef IFLA_LINKMODE
346d49e1aeSJan Lentfer #define IFLA_LINKMODE 17
356d49e1aeSJan Lentfer #define IF_OPER_DORMANT 5
366d49e1aeSJan Lentfer #define IF_OPER_UP 6
376d49e1aeSJan Lentfer #endif
386d49e1aeSJan Lentfer 
396d49e1aeSJan Lentfer #define NLM_F_REQUEST 1
406d49e1aeSJan Lentfer 
416d49e1aeSJan Lentfer #define NETLINK_ROUTE 0
426d49e1aeSJan Lentfer #define RTMGRP_LINK 1
436d49e1aeSJan Lentfer #define RTM_BASE 0x10
446d49e1aeSJan Lentfer #define RTM_NEWLINK (RTM_BASE + 0)
456d49e1aeSJan Lentfer #define RTM_DELLINK (RTM_BASE + 1)
466d49e1aeSJan Lentfer #define RTM_SETLINK (RTM_BASE + 3)
476d49e1aeSJan Lentfer 
486d49e1aeSJan Lentfer #define NLMSG_ALIGNTO 4
496d49e1aeSJan Lentfer #define NLMSG_ALIGN(len) (((len) + NLMSG_ALIGNTO - 1) & ~(NLMSG_ALIGNTO - 1))
503ff40c12SJohn Marino #define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
516d49e1aeSJan Lentfer #define NLMSG_LENGTH(len) ((len) + NLMSG_ALIGN(sizeof(struct nlmsghdr)))
523ff40c12SJohn Marino #define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
536d49e1aeSJan Lentfer #define NLMSG_DATA(nlh) ((void*) (((char*) nlh) + NLMSG_LENGTH(0)))
543ff40c12SJohn Marino #define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), \
553ff40c12SJohn Marino 			     (struct nlmsghdr *) \
563ff40c12SJohn Marino 			     (((char *)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
573ff40c12SJohn Marino #define NLMSG_OK(nlh,len) ((len) >= (int) sizeof(struct nlmsghdr) && \
583ff40c12SJohn Marino 			   (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && \
593ff40c12SJohn Marino 			   (int) (nlh)->nlmsg_len <= (len))
603ff40c12SJohn Marino #define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
616d49e1aeSJan Lentfer 
626d49e1aeSJan Lentfer #define RTA_ALIGNTO 4
636d49e1aeSJan Lentfer #define RTA_ALIGN(len) (((len) + RTA_ALIGNTO - 1) & ~(RTA_ALIGNTO - 1))
646d49e1aeSJan Lentfer #define RTA_OK(rta,len) \
656d49e1aeSJan Lentfer ((len) > 0 && (rta)->rta_len >= sizeof(struct rtattr) && \
666d49e1aeSJan Lentfer (rta)->rta_len <= (len))
676d49e1aeSJan Lentfer #define RTA_NEXT(rta,attrlen) \
686d49e1aeSJan Lentfer ((attrlen) -= RTA_ALIGN((rta)->rta_len), \
696d49e1aeSJan Lentfer (struct rtattr *) (((char *)(rta)) + RTA_ALIGN((rta)->rta_len)))
706d49e1aeSJan Lentfer #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
71*a1157835SDaniel Fojt #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
726d49e1aeSJan Lentfer #define RTA_DATA(rta) ((void *) (((char *) (rta)) + RTA_LENGTH(0)))
733ff40c12SJohn Marino #define RTA_PAYLOAD(rta) ((int) ((rta)->rta_len) - RTA_LENGTH(0))
746d49e1aeSJan Lentfer 
756d49e1aeSJan Lentfer 
766d49e1aeSJan Lentfer struct sockaddr_nl
776d49e1aeSJan Lentfer {
786d49e1aeSJan Lentfer 	sa_family_t nl_family;
796d49e1aeSJan Lentfer 	unsigned short nl_pad;
806d49e1aeSJan Lentfer 	u32 nl_pid;
816d49e1aeSJan Lentfer 	u32 nl_groups;
826d49e1aeSJan Lentfer };
836d49e1aeSJan Lentfer 
846d49e1aeSJan Lentfer struct nlmsghdr
856d49e1aeSJan Lentfer {
866d49e1aeSJan Lentfer 	u32 nlmsg_len;
876d49e1aeSJan Lentfer 	u16 nlmsg_type;
886d49e1aeSJan Lentfer 	u16 nlmsg_flags;
896d49e1aeSJan Lentfer 	u32 nlmsg_seq;
906d49e1aeSJan Lentfer 	u32 nlmsg_pid;
916d49e1aeSJan Lentfer };
926d49e1aeSJan Lentfer 
936d49e1aeSJan Lentfer struct ifinfomsg
946d49e1aeSJan Lentfer {
956d49e1aeSJan Lentfer 	unsigned char ifi_family;
966d49e1aeSJan Lentfer 	unsigned char __ifi_pad;
976d49e1aeSJan Lentfer 	unsigned short ifi_type;
986d49e1aeSJan Lentfer 	int ifi_index;
996d49e1aeSJan Lentfer 	unsigned ifi_flags;
1006d49e1aeSJan Lentfer 	unsigned ifi_change;
1016d49e1aeSJan Lentfer };
1026d49e1aeSJan Lentfer 
1036d49e1aeSJan Lentfer struct rtattr
1046d49e1aeSJan Lentfer {
1056d49e1aeSJan Lentfer 	unsigned short rta_len;
1066d49e1aeSJan Lentfer 	unsigned short rta_type;
1076d49e1aeSJan Lentfer };
1086d49e1aeSJan Lentfer 
1096d49e1aeSJan Lentfer #endif /* PRIV_NETLINK_H */
110