[vala] libnl-3.0: add bindings
- From: Michael Lauer <mlauer src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] libnl-3.0: add bindings
- Date: Sat, 17 Dec 2011 09:39:13 +0000 (UTC)
commit f3d13ae219e73cd3e01c1b8976e4393ed69c3fbb
Author: Klaus Kurzmann <mok fluxnetz de>
Date: Sat Dec 17 10:38:48 2011 +0100
libnl-3.0: add bindings
vapi/Makefile.am | 2 +
vapi/libnl-3.0.deps | 1 +
vapi/libnl-3.0.vapi | 443 +++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 446 insertions(+), 0 deletions(-)
---
diff --git a/vapi/Makefile.am b/vapi/Makefile.am
index f1d5557..b2823e2 100644
--- a/vapi/Makefile.am
+++ b/vapi/Makefile.am
@@ -155,6 +155,8 @@ dist_vapi_DATA = \
libnl-1.vapi \
libnl-2.0.deps \
libnl-2.0.vapi \
+ libnl-3.0.deps \
+ libnl-3.0.vapi \
libnotify.deps \
libnotify.vapi \
liboobs-1.vapi \
diff --git a/vapi/libnl-3.0.deps b/vapi/libnl-3.0.deps
new file mode 100644
index 0000000..a08e1f3
--- /dev/null
+++ b/vapi/libnl-3.0.deps
@@ -0,0 +1 @@
+linux
diff --git a/vapi/libnl-3.0.vapi b/vapi/libnl-3.0.vapi
new file mode 100644
index 0000000..a20f459
--- /dev/null
+++ b/vapi/libnl-3.0.vapi
@@ -0,0 +1,443 @@
+/*
+ * libnl-3.0.vapi
+ *
+ * Copyright (C) 2009-2010 Michael 'Mickey' Lauer <mlauer vanille-media de>
+ * Copyright (C) 2011 Klaus Kurzmann <mok fluxnetz de>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+[CCode (lower_case_cprefix = "nl_", cheader_filename = "netlink/netlink.h")]
+namespace Netlink {
+
+ [CCode (cname = "nl_geterror", cheader_filename = "netlink/netlink.h")]
+ public static unowned string strerror( int number );
+
+ [CCode (instance_pos = -1)]
+ public delegate void CallbackFunc (Object obj);
+
+ [CCode (cname = "nl_recmsg_msg_cb_t", cheader_filename = "netlink/netlink.h", instance_pos = -1)]
+ public delegate int MessageCallbackFunc (Message msg);
+
+ [Compact]
+ [CCode (cprefix = "rtnl_addr_", cname = "struct nl_addr", free_function = "", cheader_filename = "netlink/netlink.h")]
+ public class Address : Object {
+ [CCode (cname = "nl_addr_alloc")]
+ public Address();
+
+ public void put();
+ public int build_add_request (int a, out Message m);
+ public int build_delete_request (int a, out Message m);
+
+ public int set_label (string label);
+ public string get_label ();
+
+ public void set_family (int family);
+ public int get_family ();
+
+
+ public Netlink.Address? get_local();
+ public Netlink.Address? get_peer();
+ public Netlink.Address? get_broadcast();
+ public Netlink.Address? get_anycast();
+ public Netlink.Address? get_multicast();
+
+ public void set_prefixlen (int len);
+ public int get_prefixlen ();
+
+ public int get_ifindex();
+ public int get_scope();
+
+ public void set_flags (int flags);
+ public void unset_flags (int flags);
+ public int get_flags ();
+
+ [CCode (cname = "nl_addr_get_len")]
+ public int get_len();
+
+ [CCode (cname = "nl_addr_get_binary_addr")]
+ public void* get_binary_addr();
+
+ [CCode (cname = "nl_addr2str")]
+ public unowned string to_stringbuf(char[] buf);
+
+ public string to_string() {
+ char[] buf = new char[256];
+ return to_stringbuf( buf );
+ }
+ }
+
+ [Compact]
+ [CCode (cprefix = "nla_", cname = "struct nlattr", free_function = "", cheader_filename = "netlink/netlink.h")]
+ public class Attribute {
+ public static int attr_size (int payload);
+ public static int total_size (int payload);
+ public static int padlen (int payload);
+
+ public int type();
+ public void* data();
+ public int len();
+ public int ok (int remaining);
+ public Attribute next (out int remaining);
+ public static int parse (Attribute[] attributes, Attribute head, int len, AttributePolicy? policy = null);
+ public int validate (int len, int maxtype, AttributePolicy? policy = null);
+ public Attribute find (int len, int attrtype);
+ }
+
+ [Compact]
+ [CCode (cname = "struct nla_policy", free_function = "")]
+ public class AttributePolicy {
+ [CCode (cname = "")]
+ public AttributePolicy( AttributeType type = AttributeType.UNSPEC, uint16 minlen = 0, uint16 maxlen = 65535 )
+ {
+ this.type = type;
+ this.minlen = minlen;
+ this.maxlen = maxlen;
+ }
+ public uint16 type;
+ public uint16 minlen;
+ public uint16 maxlen;
+ }
+
+ [CCode (cprefix = "NLA_", cname = "int", cheader_filename = "netlink/attr.h")]
+ public enum AttributeType {
+ UNSPEC, /**< Unspecified type, binary data chunk */
+ U8, /**< 8 bit integer */
+ U16, /**< 16 bit integer */
+ U32, /**< 32 bit integer */
+ U64, /**< 64 bit integer */
+ STRING, /**< NUL terminated character string */
+ FLAG, /**< Flag */
+ MSECS, /**< Micro seconds (64bit) */
+ NESTED, /**< Nested attributes */
+ TYPE_MAX
+ }
+
+ [Compact]
+ [CCode (cprefix = "rtnl_addr_", cname = "struct rtnl_addr", free_function = "", cheader_filename = "netlink/route/addr.h")]
+ public class RouteAddress : Address {
+ [CCode (cname = "rtnl_addr_alloc")]
+ public RouteAddress();
+
+ public void set_ifindex (int index );
+ public int get_ifindex ();
+
+ public void set_scope (int scope);
+ public int get_scope ();
+
+ public unowned Address get_local();
+ }
+
+ [Compact]
+ [CCode (cprefix = "nl_cache_", cname = "struct nl_cache", free_function = "nl_cache_free", cheader_filename = "netlink/netlink.h")]
+ public class Cache {
+ public static int alloc_name (string name, out Cache c);
+
+ public void @foreach (CallbackFunc cb);
+ public void foreach_filter (Object obj, CallbackFunc cb);
+
+ public void mngt_provide();
+ public void mngt_unprovide();
+ }
+
+ [Compact]
+ [CCode (cprefix = "nl_cb_", cname = "struct nl_cb", free_function = "", cheader_filename = "netlink/netlink.h")]
+ public class Callback {
+ [CCode (cname = "nl_cb_alloc")]
+ public Callback (CallbackKind kind = CallbackKind.DEFAULT);
+ [CCode (cname = "nl_cb_set")]
+ public int @set (CallbackType type, CallbackKind kind, MessageCallbackFunc func);
+ [CCode (cname = "nl_cb_set_all")]
+ public int set_all (CallbackKind kind, MessageCallbackFunc func);
+ }
+
+ [CCode (cname = "enum nl_cb_action", cprefix = "NL_", cheader_filename = "netlink/netlink.h")]
+ public enum CallbackAction {
+ OK, // Proceed with whatever comes next.
+ SKIP, // Skip this message.
+ STOP, // Stop parsing altogether and discard remaining messages.
+ }
+
+ [CCode (cname = "enum nl_cb_kind", cprefix = "NL_CB_", cheader_filename = "netlink/netlink.h")]
+ public enum CallbackKind {
+ DEFAULT, // Default handlers (quiet).
+ VERBOSE, // Verbose default handlers (error messages printed).
+ DEBUG, // Debug handlers for debugging.
+ CUSTOM, // Customized handler specified by the user.
+ }
+
+ [CCode (cname = "enum nl_cb_type", cprefix = "NL_CB_", cheader_filename = "netlink/netlink.h")]
+ public enum CallbackType {
+ VALID, // Message is valid.
+ FINISH, // Last message in a series of multi part messages received.
+ OVERRUN, // Report received that data was lost.
+ SKIPPED, // Message wants to be skipped.
+ ACK, // Message is an acknowledge.
+ MSG_IN, // Called for every message received.
+ MSG_OUT, // Called for every message sent out except for nl_sendto().
+ INVALID, // Message is malformed and invalid.
+ SEQ_CHECK, // Called instead of internal sequence number checking.
+ SEND_ACK, // Sending of an acknowledge message has been requested.
+ }
+
+ [Compact]
+ [CCode (cprefix = "nl_link_cache_", cname = "struct nl_cache", free_function = "nl_cache_free", cheader_filename = "netlink/netlink.h")]
+ public class LinkCache : Cache
+ {
+ [CCode (cname = "rtnl_link_name2i")]
+ public int name2i (string name);
+ [CCode (cname = "rtnl_link_i2name")]
+ public unowned string i2name( int idx, char[] buffer );
+ }
+
+ [Compact]
+ [CCode (cprefix = "nl_addr_cache", cname = "struct nl_cache", free_function = "nl_cache_free", cheader_filename = "netlink/netlink.h")]
+ public class AddrCache : Cache
+ {
+ }
+
+ [Compact]
+ [CCode (cprefix = "nl_msg_", cname = "struct nl_msg", free_function = "nl_msg_free", cheader_filename = "netlink/netlink.h")]
+ public class Message
+ {
+ public void dump (Posix.FILE file);
+ public int parse (CallbackFunc func);
+ [CCode (cname = "nlmsg_hdr")]
+ public MessageHeader header ();
+ }
+
+ [Compact]
+ [CCode (cprefix = "nlmsg_", cname = "struct nlmsghdr", free_function = "", cheader_filename = "netlink/netlink.h")]
+ public class MessageHeader
+ {
+ // field access
+ public uint32 nlmsg_len;
+ public uint16 nlmsg_type;
+ public uint16 nlmsg_flags;
+ public uint32 nlmsg_seq;
+ public uint32 nlmsg_pid;
+
+ // size calculations
+ public static int msg_size (int payload);
+ public static int total_size (int payload);
+ public static int padlen (int payload);
+
+ // payload access
+ public void* data ();
+ public int len ();
+ public void* tail ();
+
+ // attribute access
+ public Attribute attrdata (int hdrlen);
+ public int attrlen (int hdrlen);
+
+ // message parsing
+ public bool valid_hdr (int hdrlen);
+ public bool ok (int remaining);
+ public MessageHeader next (out int remaining);
+ public int parse (int hdrlen, [CCode (array_length = "false")] out Attribute[] attributes, AttributeType maxtype, AttributePolicy? policy = null);
+ public Attribute? find_attr (int hdrlen, AttributeType type);
+ public int validate (int hdrlen, AttributeType maxtype, AttributePolicy policy);
+ }
+
+ [Compact]
+ [CCode (cprefix = "nl_socket_", cname = "struct nl_sock", free_function = "nl_socket_free")]
+ public class Socket {
+ [CCode (cname = "nl_socket_alloc")]
+ public Socket();
+
+ [CCode (cname = "rtnl_link_alloc_cache")]
+ public int link_alloc_cache (int family, out LinkCache c);
+ [CCode (cname = "rtnl_addr_alloc_cache")]
+ public int addr_alloc_cache (out AddrCache c);
+
+ // connection management
+ [CCode (cname = "nl_close")]
+ public int close ();
+ [CCode (cname = "nl_connect")]
+ public int connect (int family);
+
+ // group management
+ public int add_memberships (int group, ...);
+ public int add_membership (int group);
+ public int drop_memberships (int group, ...);
+ public int drop_membership (int group);
+ public uint32 get_peer_port ();
+ public void set_peer_port (uint32 port);
+
+ // callback management
+ public Callback get_cb ();
+ public void set_cb (Callback cb);
+ public int modify_cb (CallbackType type, CallbackKind kind, MessageCallbackFunc callback);
+
+ // configuration
+ public int set_buffer_size (int rxbuf, int txbuf);
+ public int set_passcred (bool on);
+ public int recv_pktinfo (bool on);
+
+ public void disable_seq_check ();
+ public uint use_seq ();
+ public void disable_auto_ack ();
+ public void enable_auto_ack ();
+
+ public int get_fd ();
+ public int set_nonblocking ();
+ public void enable_msg_peek ();
+ public void disable_msg_peek ();
+
+ // receiving messages
+ [CCode (cname = "nl_recv")]
+ public int recv (out Linux.Netlink.SockAddrNl addr, out char[] buf, out Linux.Socket.ucred cred);
+
+ [CCode (cname = "nl_recvmsgs")]
+ public int recvmsgs (Callback cb);
+
+ [CCode (cname = "nl_recvmsgs_default")]
+ public int recvmsgs_default ();
+
+ [CCode (cname = "nl_wait_for_ack")]
+ public int wait_for_ack ();
+ }
+
+ [Compact]
+ [CCode (cprefix = "nl_object_", cname = "struct nl_object", free_function = "nl_object_free", cheader_filename = "netlink/object.h")]
+ public class Object
+ {
+ public uint32 ce_mask;
+
+ public unowned string attrs2str (uint32 attrs, char[] buf);
+ public unowned string attr_list (char[] buf);
+ public void dump (DumpParams params);
+
+ }
+
+ [CCode (cprefix = "NL_DUMP_", cname = "int", cheader_filename = "netlink/types.h")]
+ public enum DumpType {
+ LINE, /**< Dump object briefly on one line */
+ DETAILS, /**< Dump all attributes but no statistics */
+ STATS, /**< Dump all attributes including statistics */
+ }
+
+ [CCode (cname = "struct nl_dump_params", free_function = "", cheader_filename = "netlink/types.h")]
+ public struct DumpParams {
+ public DumpType dp_type;
+ public int dp_prefix;
+ public bool dp_print_index;
+ public bool dp_dump_msgtype;
+ public unowned Posix.FILE dp_fd;
+ public unowned string dp_buf;
+ public size_t dp_buflen;
+ }
+
+ [Compact]
+ [CCode (cprefix = "rtnl_link_", cname = "struct rtnl_link", free_function = "rtnl_link_destroy", cheader_filename = "netlink/route/link.h")]
+ public class Link
+ {
+ public unowned string get_name();
+ public Netlink.Address? get_addr();
+ public Netlink.Address? get_broadcast();
+ public uint get_flags();
+ public int get_family();
+ public uint get_arptype();
+ public int get_ifindex();
+ public uint get_mtu();
+ public uint get_txqlen();
+ public uint get_weight();
+ public unowned string? get_qdisc();
+ }
+
+ [Compact]
+ [CCode (cprefix = "rtnl_route_", cname = "struct rtnl_route", cheader_filename = "netlink/route/route.h")]
+ public class Route
+ {
+ public uint32 get_table();
+ public uint8 get_scope();
+ public uint8 get_tos();
+ public uint8 get_protocol();
+ public uint32 get_priority();
+ public uint8 get_family();
+ public Netlink.Address? get_dst();
+ public Netlink.Address? get_src();
+ public uint8 get_type();
+ public uint32 get_flags();
+ public int get_metric();
+ public Netlink.Address? get_pref_src();
+ public int get_iif();
+ }
+
+ [Compact]
+ [CCode (cprefix = "rtnl_neigh_", cname = "struct rtnl_neigh", cheader_filename = "netlink/route/neighbour.h")]
+ public class Neighbour
+ {
+ public int get_state();
+ public uint get_flags();
+ public int get_ifindex();
+ public Netlink.Address? get_lladdr();
+ public Netlink.Address? get_dst();
+ public int get_type();
+ public int get_family();
+ }
+
+ [Compact]
+ [CCode (cprefix = "rtnl_rule_", cname = "struct rtnl_rule", cheader_filename = "netlink/route/rule.h")]
+ public class Rule
+ {
+ public int get_family();
+ public uint32 get_prio();
+ public uint32 get_mark();
+ public uint32 get_mask();
+ public uint32 get_table();
+ public uint8 get_dsfield();
+ public Netlink.Address? get_src();
+ public Netlink.Address? get_dst();
+ public uint8 get_action();
+ public unowned string? get_iif();
+ public unowned string? get_oif();
+ public uint32 get_realms();
+ public uint32 get_goto();
+ }
+
+ [Compact]
+ [CCode (cprefix = "rtnl_qdisc_", cname = "struct rtnl_qdisc", cheader_filename = "netlink/route/qdisc.h")]
+ public class Qdisc
+ {
+ public int get_ifindex();
+ public uint32 get_handle();
+ public uint32 get_parent();
+ public unowned string? get_kind();
+ public uint64 get_stat();
+ }
+
+ [CCode (cname = "nl_nlmsgtype2str", cheader_filename = "netlink/msg.h")]
+ public unowned string msgType2Str( int type, char[] buf );
+ [CCode (cname = "nl_af2str", cheader_filename = "netlink/addr.h")]
+ public unowned string af2Str( int family, char[] buf );
+ [CCode (cname = "nl_llproto2str", cheader_filename = "netlink/utils.h")]
+ public unowned string llproto2Str( uint proto, char[] buf );
+ [CCode (cname = "rtnl_link_flags2str", cheader_filename = "netlink/route/link.h")]
+ public unowned string linkFlags2Str( uint flags, char[] buf );
+ [CCode (cname = "rtnl_scope2str", cheader_filename = "netlink/route/rtnl.h")]
+ public unowned string routeScope2Str( int scope, char[] buf );
+ [CCode (cname = "nl_rtntype2str", cheader_filename = "netlink/netlink.h")]
+ public unowned string routeType2Str( int type, char[] buf );
+ [CCode (cname = "rtnl_addr_flags2str", cheader_filename = "netlink/netlink.h")]
+ public unowned string addrFlags2Str( int flags, char[] buf );
+ [CCode (cname = "rtnl_neigh_flags2str", cheader_filename = "netlink/netlink.h")]
+ public unowned string neighFlags2Str( uint flags, char[] buf );
+ [CCode (cname = "rtnl_neigh_state2str", cheader_filename = "netlink/netlink.h")]
+ public unowned string neighState2Str( int state, char[] buf );
+
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]