]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - include/libnetlink.h
Merge branch 'master' of git://git.kernel.org/pub/scm/network/iproute2/iproute2-next
[mirror_iproute2.git] / include / libnetlink.h
index 643c3bc56929a1c59f49d8711e3325889f531620..9d9249e634dc33b70f5c8bc1abce6b7ed61180be 100644 (file)
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 #ifndef __LIBNETLINK_H__
 #define __LIBNETLINK_H__ 1
 
@@ -76,6 +77,9 @@ typedef int (*rtnl_listen_filter_t)(const struct sockaddr_nl *,
                                    struct rtnl_ctrl_data *,
                                    struct nlmsghdr *n, void *);
 
+typedef int (*nl_ext_ack_fn_t)(const char *errmsg, uint32_t off,
+                              const struct nlmsghdr *inner_nlh);
+
 struct rtnl_dump_filter_arg {
        rtnl_filter_t filter;
        void *arg1;
@@ -90,15 +94,22 @@ int rtnl_dump_filter_nc(struct rtnl_handle *rth,
 #define rtnl_dump_filter(rth, filter, arg) \
        rtnl_dump_filter_nc(rth, filter, arg, 0)
 int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
-             struct nlmsghdr *answer, size_t len)
+             struct nlmsghdr **answer)
+       __attribute__((warn_unused_result));
+int rtnl_talk_iov(struct rtnl_handle *rtnl, struct iovec *iovec, size_t iovlen,
+                 struct nlmsghdr **answer)
+       __attribute__((warn_unused_result));
+int rtnl_talk_extack(struct rtnl_handle *rtnl, struct nlmsghdr *n,
+             struct nlmsghdr **answer, nl_ext_ack_fn_t errfn)
        __attribute__((warn_unused_result));
 int rtnl_talk_suppress_rtnl_errmsg(struct rtnl_handle *rtnl, struct nlmsghdr *n,
-                                  struct nlmsghdr *answer, size_t len)
+                                  struct nlmsghdr **answer)
        __attribute__((warn_unused_result));
 int rtnl_send(struct rtnl_handle *rth, const void *buf, int)
        __attribute__((warn_unused_result));
 int rtnl_send_check(struct rtnl_handle *rth, const void *buf, int)
        __attribute__((warn_unused_result));
+int nl_dump_ext_ack(const struct nlmsghdr *nlh, nl_ext_ack_fn_t errfn);
 
 int addattr(struct nlmsghdr *n, int maxlen, int type);
 int addattr8(struct nlmsghdr *n, int maxlen, int type, __u8 data);