]> git.proxmox.com Git - mirror_lxc.git/blame - src/lxc/rtnl.c
utils: use SYSTRACE() when logging stdio permission fixup failures
[mirror_lxc.git] / src / lxc / rtnl.c
CommitLineData
cc73685d 1/* SPDX-License-Identifier: LGPL-2.1+ */
d38dd64a
CB
2
3#ifndef _GNU_SOURCE
4#define _GNU_SOURCE 1
5#endif
0ad19a3f 6#include <errno.h>
0ad19a3f 7#include <linux/netlink.h>
8#include <linux/rtnetlink.h>
d38dd64a
CB
9#include <stdio.h>
10#include <stdlib.h>
11#include <string.h>
12#include <sys/socket.h>
13#include <unistd.h>
f549edcc 14
d38dd64a 15#include "config.h"
f549edcc
GK
16#include "nl.h"
17#include "rtnl.h"
0ad19a3f 18
6822ba9b 19int rtnetlink_open(struct rtnl_handler *handler)
0ad19a3f 20{
21 return netlink_open(&handler->nlh, NETLINK_ROUTE);
22}
23
6822ba9b 24void rtnetlink_close(struct rtnl_handler *handler)
0ad19a3f 25{
d16bda44 26 netlink_close(&handler->nlh);
0ad19a3f 27}
28
6ce39620
CB
29#pragma GCC diagnostic push
30#pragma GCC diagnostic ignored "-Wcast-align"
31
6822ba9b 32int rtnetlink_rcv(struct rtnl_handler *handler, struct rtnlmsg *rtnlmsg)
0ad19a3f 33{
34 return netlink_rcv(&handler->nlh, (struct nlmsg *)&rtnlmsg->nlmsghdr);
35}
36
6822ba9b 37int rtnetlink_send(struct rtnl_handler *handler, struct rtnlmsg *rtnlmsg)
0ad19a3f 38{
39
40 return netlink_send(&handler->nlh, (struct nlmsg *)&rtnlmsg->nlmsghdr);
41}
42
6822ba9b
CB
43int rtnetlink_transaction(struct rtnl_handler *handler, struct rtnlmsg *request,
44 struct rtnlmsg *answer)
0ad19a3f 45{
736da9d0
CB
46 return netlink_transaction(&handler->nlh,
47 (struct nlmsg *)&request->nlmsghdr,
0ad19a3f 48 (struct nlmsg *)&answer->nlmsghdr);
49}
50
6ce39620
CB
51#pragma GCC diagnostic pop
52
6822ba9b 53struct rtnlmsg *rtnlmsg_alloc(size_t size)
0ad19a3f 54{
736da9d0
CB
55 /*
56 size_t len;
57
58 len = NLMSG_LENGTH(NLMSG_ALIGN(sizeof(struct rtnlmsghdr))) + size;
59 return (struct rtnlmsg *)nlmsg_alloc(len);
60 */
61
0ad19a3f 62 return NULL;
63}
64
6822ba9b 65void rtnlmsg_free(struct rtnlmsg *rtnlmsg) { free(rtnlmsg); }