1 /* Netlink helpers for zbuf 2 * Copyright (c) 2014-2015 Timo Teräs 3 * 4 * This file is free software: you may copy, redistribute and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 2 of the License, or 7 * (at your option) any later version. 8 */ 9 10 #include "zbuf.h" 11 12 #define ZNL_BUFFER_SIZE 8192 13 14 void *znl_push(struct zbuf *zb, size_t n); 15 void *znl_pull(struct zbuf *zb, size_t n); 16 17 struct nlmsghdr *znl_nlmsg_push(struct zbuf *zb, uint16_t type, uint16_t flags); 18 void znl_nlmsg_complete(struct zbuf *zb, struct nlmsghdr *n); 19 struct nlmsghdr *znl_nlmsg_pull(struct zbuf *zb, struct zbuf *payload); 20 21 struct rtattr *znl_rta_push(struct zbuf *zb, uint16_t type, const void *val, size_t len); 22 struct rtattr *znl_rta_push_u32(struct zbuf *zb, uint16_t type, uint32_t val); 23 struct rtattr *znl_rta_nested_push(struct zbuf *zb, uint16_t type); 24 void znl_rta_nested_complete(struct zbuf *zb, struct rtattr *rta); 25 26 struct rtattr *znl_rta_pull(struct zbuf *zb, struct zbuf *payload); 27 28 int znl_open(int protocol, int groups); 29 30