#include "netlink-types.h"
#include "missing.h"
+/* Maximum ARP IP target defined in kernel */
+#define BOND_MAX_ARP_TARGETS 16
+
+typedef enum {
+ BOND_ARP_TARGETS_0,
+ BOND_ARP_TARGETS_1,
+ BOND_ARP_TARGETS_2,
+ BOND_ARP_TARGETS_3,
+ BOND_ARP_TARGETS_4,
+ BOND_ARP_TARGETS_5,
+ BOND_ARP_TARGETS_6,
+ BOND_ARP_TARGETS_7,
+ BOND_ARP_TARGETS_8,
+ BOND_ARP_TARGETS_9,
+ BOND_ARP_TARGETS_10,
+ BOND_ARP_TARGETS_11,
+ BOND_ARP_TARGETS_12,
+ BOND_ARP_TARGETS_13,
+ BOND_ARP_TARGETS_14,
+ BOND_ARP_TARGETS_MAX = BOND_MAX_ARP_TARGETS,
+} BondArpTargets;
+
struct NLType {
uint16_t type;
size_t size;
[RTM_GETNEIGH] = { .type = NETLINK_TYPE_NESTED, .type_system = &rtnl_neigh_type_system, .size = sizeof(struct ndmsg) },
};
-const NLTypeSystem rtnl_type_system = {
+const NLTypeSystem type_system_root = {
.count = ELEMENTSOF(rtnl_types),
.types = rtnl_types,
};
const NLType *nl_type;
assert(ret);
-
- if (!type_system)
- type_system = &rtnl_type_system;
-
+ assert(type_system);
assert(type_system->types);
if (type >= type_system->count)
return -EOPNOTSUPP;
type_system = &type_system_union->type_systems[protocol];
- if (type_system->count == 0)
+ if (!type_system->types)
return -EOPNOTSUPP;
*ret = type_system;