net: add missing includes and forward declarations under net/
[linux-2.6-microblaze.git] / include / net / bond_options.h
index 61b4906..69292ec 100644 (file)
@@ -7,6 +7,14 @@
 #ifndef _NET_BOND_OPTIONS_H
 #define _NET_BOND_OPTIONS_H
 
+#include <linux/bits.h>
+#include <linux/limits.h>
+#include <linux/types.h>
+#include <linux/string.h>
+
+struct netlink_ext_ack;
+struct nlattr;
+
 #define BOND_OPT_MAX_NAMELEN 32
 #define BOND_OPT_VALID(opt) ((opt) < BOND_OPT_LAST)
 #define BOND_MODE_ALL_EX(x) (~(x))
@@ -67,6 +75,7 @@ enum {
        BOND_OPT_LACP_ACTIVE,
        BOND_OPT_MISSED_MAX,
        BOND_OPT_NS_TARGETS,
+       BOND_OPT_PRIO,
        BOND_OPT_LAST
 };
 
@@ -83,7 +92,10 @@ struct bond_opt_value {
        char *string;
        u64 value;
        u32 flags;
-       char extra[BOND_OPT_EXTRA_MAXLEN];
+       union {
+               char extra[BOND_OPT_EXTRA_MAXLEN];
+               struct net_device *slave_dev;
+       };
 };
 
 struct bonding;
@@ -107,7 +119,8 @@ struct bond_option {
 };
 
 int __bond_opt_set(struct bonding *bond, unsigned int option,
-                  struct bond_opt_value *val);
+                  struct bond_opt_value *val,
+                  struct nlattr *bad_attr, struct netlink_ext_ack *extack);
 int __bond_opt_set_notify(struct bonding *bond, unsigned int option,
                          struct bond_opt_value *val);
 int bond_opt_tryset_rtnl(struct bonding *bond, unsigned int option, char *buf);
@@ -132,13 +145,16 @@ static inline void __bond_opt_init(struct bond_opt_value *optval,
                optval->value = value;
        else if (string)
                optval->string = string;
-       else if (extra_len <= BOND_OPT_EXTRA_MAXLEN)
+
+       if (extra && extra_len <= BOND_OPT_EXTRA_MAXLEN)
                memcpy(optval->extra, extra, extra_len);
 }
 #define bond_opt_initval(optval, value) __bond_opt_init(optval, NULL, value, NULL, 0)
 #define bond_opt_initstr(optval, str) __bond_opt_init(optval, str, ULLONG_MAX, NULL, 0)
 #define bond_opt_initextra(optval, extra, extra_len) \
        __bond_opt_init(optval, NULL, ULLONG_MAX, extra, extra_len)
+#define bond_opt_slave_initval(optval, slave_dev, value) \
+       __bond_opt_init(optval, NULL, value, slave_dev, sizeof(struct net_device *))
 
 void bond_option_arp_ip_targets_clear(struct bonding *bond);
 #if IS_ENABLED(CONFIG_IPV6)