diff options
author | 2013-10-21 19:12:52 +0100 | |
---|---|---|
committer | 2013-10-27 22:18:34 +0100 | |
commit | 65f568bbeb9b8c70200e44c19a797df3a0bfd485 (patch) | |
tree | 9b3dbae3cbb8ae55bed97a2c6c620c03a89a27ce /src/systemd | |
parent | test-strv.c: added STRV_FOREACH and STRV_FOREACH_BACKWARDS (diff) | |
download | systemd-65f568bbeb9b8c70200e44c19a797df3a0bfd485.tar.gz systemd-65f568bbeb9b8c70200e44c19a797df3a0bfd485.tar.bz2 systemd-65f568bbeb9b8c70200e44c19a797df3a0bfd485.zip |
libsystemd-rtnl: add a rtnetlink library
This is intentionally as similar to sd-bus as possible. While it
would be simple to export it, the intentions is to keep this
internal (at least for the forseeable future).
Currently only synchronous communication is implemented
Diffstat (limited to 'src/systemd')
-rw-r--r-- | src/systemd/sd-rtnl.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/systemd/sd-rtnl.h b/src/systemd/sd-rtnl.h new file mode 100644 index 000000000..5f5f3e3d2 --- /dev/null +++ b/src/systemd/sd-rtnl.h @@ -0,0 +1,52 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Tom Gundersen <teg@jklm.no> + + systemd 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. + + systemd 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 systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <linux/rtnetlink.h> +#include <linux/netlink.h> +#include <stdint.h> +#include <util.h> + +typedef struct sd_rtnl sd_rtnl; +typedef struct sd_rtnl_message sd_rtnl_message; + +/* bus */ +int sd_rtnl_open(__u32 groups, sd_rtnl **nl); + +sd_rtnl *sd_rtnl_ref(sd_rtnl *nl); +sd_rtnl *sd_rtnl_unref(sd_rtnl *nl); + +int sd_rtnl_send_with_reply_and_block(sd_rtnl *nl, sd_rtnl_message *message, uint64_t timeout, sd_rtnl_message **reply); + +/* messages */ +int sd_rtnl_message_link_new(__u16 msg_type, int index, unsigned int type, unsigned int flags, sd_rtnl_message **ret); +int sd_rtnl_message_addr_new(__u16 msg_type, int index, unsigned char family, unsigned char prefixlen, unsigned char flags, unsigned char scope, sd_rtnl_message **ret); +sd_rtnl_message *sd_rtnl_message_ref(sd_rtnl_message *m); +sd_rtnl_message *sd_rtnl_message_unref(sd_rtnl_message *m); + +int sd_rtnl_message_get_type(sd_rtnl_message *m, __u16 *type); +int sd_rtnl_message_append(sd_rtnl_message *m, unsigned short type, const void *data); +int sd_rtnl_message_read(sd_rtnl_message *m, unsigned short *type, void **data); + +DEFINE_TRIVIAL_CLEANUP_FUNC(sd_rtnl*, sd_rtnl_unref); +DEFINE_TRIVIAL_CLEANUP_FUNC(sd_rtnl_message*, sd_rtnl_message_unref); + +#define _cleanup_sd_rtnl_unref_ _cleanup_(sd_rtnl_unrefp) +#define _cleanup_sd_rtnl_message_unref_ _cleanup_(sd_rtnl_message_unrefp) |