1 /* 2 * netlink/socket.h Netlink Socket 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation version 2.1 7 * of the License. 8 * 9 * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch> 10 */ 11 12 #ifndef NETLINK_SOCKET_H_ 13 #define NETLINK_SOCKET_H_ 14 15 #include <netlink/types.h> 16 #include <netlink/handlers.h> 17 18 #ifdef __cplusplus 19 extern "C" { 20 #endif 21 22 extern struct nl_sock * nl_socket_alloc(void); 23 extern struct nl_sock * nl_socket_alloc_cb(struct nl_cb *); 24 extern void nl_socket_free(struct nl_sock *); 25 26 extern uint32_t nl_socket_get_local_port(const struct nl_sock *); 27 extern void nl_socket_set_local_port(struct nl_sock *, uint32_t); 28 29 extern int nl_socket_add_memberships(struct nl_sock *, int, ...); 30 extern int nl_socket_add_membership(struct nl_sock *, int); 31 extern int nl_socket_drop_memberships(struct nl_sock *, int, ...); 32 extern int nl_socket_drop_membership(struct nl_sock *, 33 int); 34 extern void nl_join_groups(struct nl_sock *, int); 35 36 37 extern uint32_t nl_socket_get_peer_port(const struct nl_sock *); 38 extern void nl_socket_set_peer_port(struct nl_sock *, 39 uint32_t); 40 extern uint32_t nl_socket_get_peer_groups(const struct nl_sock *sk); 41 extern void nl_socket_set_peer_groups(struct nl_sock *sk, uint32_t groups); 42 extern struct nl_cb * nl_socket_get_cb(const struct nl_sock *); 43 extern void nl_socket_set_cb(struct nl_sock *, 44 struct nl_cb *); 45 extern int nl_socket_modify_cb(struct nl_sock *, enum nl_cb_type, 46 enum nl_cb_kind, 47 nl_recvmsg_msg_cb_t, void *); 48 extern int nl_socket_modify_err_cb(struct nl_sock *, enum nl_cb_kind, 49 nl_recvmsg_err_cb_t, void *); 50 51 extern int nl_socket_set_buffer_size(struct nl_sock *, int, int); 52 extern int nl_socket_set_msg_buf_size(struct nl_sock *, size_t); 53 extern size_t nl_socket_get_msg_buf_size(struct nl_sock *); 54 extern int nl_socket_set_passcred(struct nl_sock *, int); 55 extern int nl_socket_recv_pktinfo(struct nl_sock *, int); 56 57 extern void nl_socket_disable_seq_check(struct nl_sock *); 58 extern unsigned int nl_socket_use_seq(struct nl_sock *); 59 extern void nl_socket_disable_auto_ack(struct nl_sock *); 60 extern void nl_socket_enable_auto_ack(struct nl_sock *); 61 62 extern int nl_socket_get_fd(const struct nl_sock *); 63 extern int nl_socket_set_nonblocking(const struct nl_sock *); 64 extern void nl_socket_enable_msg_peek(struct nl_sock *); 65 extern void nl_socket_disable_msg_peek(struct nl_sock *); 66 67 #ifdef __cplusplus 68 } 69 #endif 70 71 #endif 72