blob: 2d65224b686cf33682288c5ce58386da29563576 [file] [log] [blame]
#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 },
[IPVS_DAEMON_ATTR_SYNC_MAXLEN] = { .type = NLA_U16 },
[IPVS_DAEMON_ATTR_MCAST_GROUP] = { .type = NLA_U32 },
[IPVS_DAEMON_ATTR_MCAST_GROUP6] = { .type = NLA_UNSPEC,
.maxlen = sizeof(struct in6_addr) },
[IPVS_DAEMON_ATTR_MCAST_PORT] = { .type = NLA_U16 },
[IPVS_DAEMON_ATTR_MCAST_TTL] = { .type = NLA_U8 },
};
#endif /* LIBIPVS_USE_NL */