144d362409d5469aed47d19e7908d19bd194493aThomas Graf/* 244d362409d5469aed47d19e7908d19bd194493aThomas Graf * netlink/netlink.h Netlink Interface 344d362409d5469aed47d19e7908d19bd194493aThomas Graf * 444d362409d5469aed47d19e7908d19bd194493aThomas Graf * This library is free software; you can redistribute it and/or 544d362409d5469aed47d19e7908d19bd194493aThomas Graf * modify it under the terms of the GNU Lesser General Public 644d362409d5469aed47d19e7908d19bd194493aThomas Graf * License as published by the Free Software Foundation version 2.1 744d362409d5469aed47d19e7908d19bd194493aThomas Graf * of the License. 844d362409d5469aed47d19e7908d19bd194493aThomas Graf * 944d362409d5469aed47d19e7908d19bd194493aThomas Graf * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch> 1044d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 1144d362409d5469aed47d19e7908d19bd194493aThomas Graf 1244d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef NETLINK_NETLINK_H_ 1344d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NETLINK_NETLINK_H_ 1444d362409d5469aed47d19e7908d19bd194493aThomas Graf 1544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <stdio.h> 1644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <stdint.h> 1744d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <string.h> 1844d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <stdlib.h> 1944d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <sys/poll.h> 2044d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <sys/socket.h> 2144d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <sys/types.h> 2244d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <sys/time.h> 231f66555570e58a71ed7975b8d2b22dafc99f8ab8Thomas Graf#include <netdb.h> 2444d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/netlink-compat.h> 2544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <linux/netlink.h> 2644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <linux/rtnetlink.h> 2744d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <linux/genetlink.h> 2844d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <linux/netfilter/nfnetlink.h> 2966330d37f58f506c423b263a4e40f094a52d4a09Thomas Graf#include <netlink/version.h> 308a3efffa5b3fde252675239914118664d36a2c24Thomas Graf#include <netlink/errno.h> 3144d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/types.h> 3244d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/handlers.h> 3344d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/socket.h> 3444d362409d5469aed47d19e7908d19bd194493aThomas Graf 3544d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifdef __cplusplus 3644d362409d5469aed47d19e7908d19bd194493aThomas Grafextern "C" { 3744d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 3844d362409d5469aed47d19e7908d19bd194493aThomas Graf 39dec2ea357d7f54c986d06a06b8233dd1a7c85245Pavel Roskinstruct ucred; 40dec2ea357d7f54c986d06a06b8233dd1a7c85245Pavel Roskin 4144d362409d5469aed47d19e7908d19bd194493aThomas Grafextern int nl_debug; 4244d362409d5469aed47d19e7908d19bd194493aThomas Grafextern struct nl_dump_params nl_debug_dp; 4344d362409d5469aed47d19e7908d19bd194493aThomas Graf 4444d362409d5469aed47d19e7908d19bd194493aThomas Graf/* Connection Management */ 451155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_connect(struct nl_sock *, int); 461155370f520cb64657e25153255cf7dc1424317fThomas Grafextern void nl_close(struct nl_sock *); 4744d362409d5469aed47d19e7908d19bd194493aThomas Graf 4844d362409d5469aed47d19e7908d19bd194493aThomas Graf/* Send */ 491155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_sendto(struct nl_sock *, void *, size_t); 501155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_sendmsg(struct nl_sock *, struct nl_msg *, 5144d362409d5469aed47d19e7908d19bd194493aThomas Graf struct msghdr *); 521155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_send(struct nl_sock *, struct nl_msg *); 5327c505eb89f7a689416f822e26c0ccea0b351ba3Karl Hiramotoextern int nl_send_iovec(struct nl_sock *, struct nl_msg *, 54256d7e723c0ff402422d3501866e9301b3f64c0fThomas Graf struct iovec *, unsigned); 5527c505eb89f7a689416f822e26c0ccea0b351ba3Karl Hiramotoextern void nl_auto_complete(struct nl_sock *, 5627c505eb89f7a689416f822e26c0ccea0b351ba3Karl Hiramoto struct nl_msg *); 571155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_send_auto_complete(struct nl_sock *, 5844d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_msg *); 591155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_send_simple(struct nl_sock *, int, int, 6044d362409d5469aed47d19e7908d19bd194493aThomas Graf void *, size_t); 6144d362409d5469aed47d19e7908d19bd194493aThomas Graf 6244d362409d5469aed47d19e7908d19bd194493aThomas Graf/* Receive */ 631155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_recv(struct nl_sock *, 6444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct sockaddr_nl *, unsigned char **, 6544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct ucred **); 6644d362409d5469aed47d19e7908d19bd194493aThomas Graf 671155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_recvmsgs(struct nl_sock *, struct nl_cb *); 6844d362409d5469aed47d19e7908d19bd194493aThomas Graf 691155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_recvmsgs_default(struct nl_sock *); 7044d362409d5469aed47d19e7908d19bd194493aThomas Graf 711155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_wait_for_ack(struct nl_sock *); 7244d362409d5469aed47d19e7908d19bd194493aThomas Graf 7344d362409d5469aed47d19e7908d19bd194493aThomas Graf/* Netlink Family Translations */ 7444d362409d5469aed47d19e7908d19bd194493aThomas Grafextern char * nl_nlfamily2str(int, char *, size_t); 7544d362409d5469aed47d19e7908d19bd194493aThomas Grafextern int nl_str2nlfamily(const char *); 7644d362409d5469aed47d19e7908d19bd194493aThomas Graf 7744d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifdef __cplusplus 7844d362409d5469aed47d19e7908d19bd194493aThomas Graf} 7944d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 8044d362409d5469aed47d19e7908d19bd194493aThomas Graf 8144d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 82