Lines Matching full:netlink
2 * Netlink helper functions for driver wrappers
14 #include "netlink.h"
23 static void netlink_receive_link(struct netlink_data *netlink, in netlink_receive_link() argument
30 cb(netlink->cfg->ctx, NLMSG_DATA(h), in netlink_receive_link()
38 struct netlink_data *netlink = eloop_ctx; in netlink_receive() local
52 wpa_printf(MSG_INFO, "netlink: recvfrom failed: %s", in netlink_receive()
61 netlink_receive_link(netlink, netlink->cfg->newlink_cb, in netlink_receive()
65 netlink_receive_link(netlink, netlink->cfg->dellink_cb, in netlink_receive()
74 wpa_printf(MSG_DEBUG, "netlink: %d extra bytes in the end of " in netlink_receive()
75 "netlink message", left); in netlink_receive()
93 struct netlink_data *netlink; in netlink_init() local
96 netlink = os_zalloc(sizeof(*netlink)); in netlink_init()
97 if (netlink == NULL) in netlink_init()
100 netlink->sock = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); in netlink_init()
101 if (netlink->sock < 0) { in netlink_init()
102 wpa_printf(MSG_ERROR, "netlink: Failed to open netlink " in netlink_init()
104 netlink_deinit(netlink); in netlink_init()
111 if (bind(netlink->sock, (struct sockaddr *) &local, sizeof(local)) < 0) in netlink_init()
113 wpa_printf(MSG_ERROR, "netlink: Failed to bind netlink " in netlink_init()
115 netlink_deinit(netlink); in netlink_init()
119 eloop_register_read_sock(netlink->sock, netlink_receive, netlink, in netlink_init()
122 netlink->cfg = cfg; in netlink_init()
124 return netlink; in netlink_init()
128 void netlink_deinit(struct netlink_data *netlink) in netlink_deinit() argument
130 if (netlink == NULL) in netlink_deinit()
132 if (netlink->sock >= 0) { in netlink_deinit()
133 eloop_unregister_read_sock(netlink->sock); in netlink_deinit()
134 close(netlink->sock); in netlink_deinit()
136 os_free(netlink->cfg); in netlink_deinit()
137 os_free(netlink); in netlink_deinit()
169 int netlink_send_oper_ifla(struct netlink_data *netlink, int ifindex, in netlink_send_oper_ifla() argument
214 wpa_printf(MSG_DEBUG, "netlink: Operstate: ifindex=%d linkmode=%d (%s), operstate=%d (%s)", in netlink_send_oper_ifla()
218 ret = send(netlink->sock, &req, req.hdr.nlmsg_len, 0); in netlink_send_oper_ifla()
220 wpa_printf(MSG_DEBUG, "netlink: Sending operstate IFLA " in netlink_send_oper_ifla()