#include "libipvs.h" #ifdef LIBIPVS_USE_NL /* Policy definitions */ struct nla_policy ipvs_cmd_policy[IPVS_CMD_ATTR_MAX + 1] = { [IPVS_CMD_ATTR_SERVICE] = { .type = NLA_NESTED }, [IPVS_CMD_ATTR_DEST] = { .type = NLA_NESTED }, [IPVS_CMD_ATTR_DAEMON] = { .type = NLA_NESTED }, [IPVS_CMD_ATTR_TIMEOUT_TCP] = { .type = NLA_U32 }, [IPVS_CMD_ATTR_TIMEOUT_TCP_FIN] = { .type = NLA_U32 }, [IPVS_CMD_ATTR_TIMEOUT_UDP] = { .type = NLA_U32 }, }; struct nla_policy ipvs_service_policy[IPVS_SVC_ATTR_MAX + 1] = { [IPVS_SVC_ATTR_AF] = { .type = NLA_U16 }, [IPVS_SVC_ATTR_PROTOCOL] = { .type = NLA_U16 }, [IPVS_SVC_ATTR_ADDR] = { .type = NLA_UNSPEC, .maxlen = sizeof(struct in6_addr) }, [IPVS_SVC_ATTR_PORT] = { .type = NLA_U16 }, [IPVS_SVC_ATTR_FWMARK] = { .type = NLA_U32 }, [IPVS_SVC_ATTR_SCHED_NAME] = { .type = NLA_STRING, .maxlen = IP_VS_SCHEDNAME_MAXLEN }, [IPVS_SVC_ATTR_FLAGS] = { .type = NLA_UNSPEC, .minlen = sizeof(struct ip_vs_flags), .maxlen = sizeof(struct ip_vs_flags) }, [IPVS_SVC_ATTR_TIMEOUT] = { .type = NLA_U32 }, [IPVS_SVC_ATTR_NETMASK] = { .type = NLA_U32 }, [IPVS_SVC_ATTR_STATS] = { .type = NLA_NESTED }, }; struct nla_policy ipvs_dest_policy[IPVS_DEST_ATTR_MAX + 1] = { [IPVS_DEST_ATTR_ADDR] = { .type = NLA_UNSPEC, .maxlen = sizeof(struct in6_addr) }, [IPVS_DEST_ATTR_PORT] = { .type = NLA_U16 }, [IPVS_DEST_ATTR_FWD_METHOD] = { .type = NLA_U32 }, [IPVS_DEST_ATTR_WEIGHT] = { .type = NLA_U32 }, [IPVS_DEST_ATTR_U_THRESH] = { .type = NLA_U32 }, [IPVS_DEST_ATTR_L_THRESH] = { .type = NLA_U32 }, [IPVS_DEST_ATTR_ACTIVE_CONNS] = { .type = NLA_U32 }, [IPVS_DEST_ATTR_INACT_CONNS] = { .type = NLA_U32 }, [IPVS_DEST_ATTR_PERSIST_CONNS] = { .type = NLA_U32 }, [IPVS_DEST_ATTR_STATS] = { .type = NLA_NESTED }, }; struct nla_policy ipvs_stats_policy[IPVS_STATS_ATTR_MAX + 1] = { [IPVS_STATS_ATTR_CONNS] = { .type = NLA_U32 }, [IPVS_STATS_ATTR_INPKTS] = { .type = NLA_U32 }, [IPVS_STATS_ATTR_OUTPKTS] = { .type = NLA_U32 }, [IPVS_STATS_ATTR_INBYTES] = { .type = NLA_U64 }, [IPVS_STATS_ATTR_OUTBYTES] = { .type = NLA_U64 }, [IPVS_STATS_ATTR_CPS] = { .type = NLA_U32 }, [IPVS_STATS_ATTR_INPPS] = { .type = NLA_U32 }, [IPVS_STATS_ATTR_OUTPPS] = { .type = NLA_U32 }, [IPVS_STATS_ATTR_INBPS] = { .type = NLA_U32 }, [IPVS_STATS_ATTR_OUTBPS] = { .type = NLA_U32 }, }; struct nla_policy ipvs_info_policy[IPVS_INFO_ATTR_MAX + 1] = { [IPVS_INFO_ATTR_VERSION] = { .type = NLA_U32 }, [IPVS_INFO_ATTR_CONN_TAB_SIZE] = { .type = NLA_U32 }, }; struct nla_policy ipvs_daemon_policy[IPVS_DAEMON_ATTR_MAX + 1] = { [IPVS_DAEMON_ATTR_STATE] = { .type = NLA_U32 }, [IPVS_DAEMON_ATTR_MCAST_IFN] = { .type = NLA_STRING, .maxlen = IP_VS_IFNAME_MAXLEN }, [IPVS_DAEMON_ATTR_SYNC_ID] = { .type = NLA_U32 }, }; #endif /* LIBIPVS_USE_NL */