FILE
netlink-gen.c
File preview with syntax highlighting.
linux-6.19.14/drivers/net/ovpn/netlink-gen.c
1// SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 2/* Do not edit directly, auto-generated from: */ 3/* Documentation/netlink/specs/ovpn.yaml */ 4/* YNL-GEN kernel source */ 5/* To regenerate run: tools/net/ynl/ynl-regen.sh */ 6 7#include <net/netlink.h> 8#include <net/genetlink.h> 9 10#include "netlink-gen.h" 11 12#include <uapi/linux/ovpn.h> 13 14/* Integer value ranges */ 15static const struct netlink_range_validation ovpn_a_peer_id_range = { 16 .max = 16777215ULL, 17}; 18 19static const struct netlink_range_validation ovpn_a_keyconf_peer_id_range = { 20 .max = 16777215ULL, 21}; 22 23/* Common nested types */ 24const struct nla_policy ovpn_keyconf_nl_policy[OVPN_A_KEYCONF_DECRYPT_DIR + 1] = { 25 [OVPN_A_KEYCONF_PEER_ID] = NLA_POLICY_FULL_RANGE(NLA_U32, &ovpn_a_keyconf_peer_id_range), 26 [OVPN_A_KEYCONF_SLOT] = NLA_POLICY_MAX(NLA_U32, 1), 27 [OVPN_A_KEYCONF_KEY_ID] = NLA_POLICY_MAX(NLA_U32, 7), 28 [OVPN_A_KEYCONF_CIPHER_ALG] = NLA_POLICY_MAX(NLA_U32, 2), 29 [OVPN_A_KEYCONF_ENCRYPT_DIR] = NLA_POLICY_NESTED(ovpn_keydir_nl_policy), 30 [OVPN_A_KEYCONF_DECRYPT_DIR] = NLA_POLICY_NESTED(ovpn_keydir_nl_policy), 31}; 32 33const struct nla_policy ovpn_keyconf_del_input_nl_policy[OVPN_A_KEYCONF_SLOT + 1] = { 34 [OVPN_A_KEYCONF_PEER_ID] = NLA_POLICY_FULL_RANGE(NLA_U32, &ovpn_a_keyconf_peer_id_range), 35 [OVPN_A_KEYCONF_SLOT] = NLA_POLICY_MAX(NLA_U32, 1), 36}; 37 38const struct nla_policy ovpn_keyconf_get_nl_policy[OVPN_A_KEYCONF_CIPHER_ALG + 1] = { 39 [OVPN_A_KEYCONF_PEER_ID] = NLA_POLICY_FULL_RANGE(NLA_U32, &ovpn_a_keyconf_peer_id_range), 40 [OVPN_A_KEYCONF_SLOT] = NLA_POLICY_MAX(NLA_U32, 1), 41 [OVPN_A_KEYCONF_KEY_ID] = NLA_POLICY_MAX(NLA_U32, 7), 42 [OVPN_A_KEYCONF_CIPHER_ALG] = NLA_POLICY_MAX(NLA_U32, 2), 43}; 44 45const struct nla_policy ovpn_keyconf_swap_input_nl_policy[OVPN_A_KEYCONF_PEER_ID + 1] = { 46 [OVPN_A_KEYCONF_PEER_ID] = NLA_POLICY_FULL_RANGE(NLA_U32, &ovpn_a_keyconf_peer_id_range), 47}; 48 49const struct nla_policy ovpn_keydir_nl_policy[OVPN_A_KEYDIR_NONCE_TAIL + 1] = { 50 [OVPN_A_KEYDIR_CIPHER_KEY] = NLA_POLICY_MAX_LEN(256), 51 [OVPN_A_KEYDIR_NONCE_TAIL] = NLA_POLICY_EXACT_LEN(OVPN_NONCE_TAIL_SIZE), 52}; 53 54const struct nla_policy ovpn_peer_nl_policy[OVPN_A_PEER_LINK_TX_PACKETS + 1] = { 55 [OVPN_A_PEER_ID] = NLA_POLICY_FULL_RANGE(NLA_U32, &ovpn_a_peer_id_range), 56 [OVPN_A_PEER_REMOTE_IPV4] = { .type = NLA_BE32, }, 57 [OVPN_A_PEER_REMOTE_IPV6] = NLA_POLICY_EXACT_LEN(16), 58 [OVPN_A_PEER_REMOTE_IPV6_SCOPE_ID] = { .type = NLA_U32, }, 59 [OVPN_A_PEER_REMOTE_PORT] = NLA_POLICY_MIN(NLA_BE16, 1), 60 [OVPN_A_PEER_SOCKET] = { .type = NLA_U32, }, 61 [OVPN_A_PEER_SOCKET_NETNSID] = { .type = NLA_S32, }, 62 [OVPN_A_PEER_VPN_IPV4] = { .type = NLA_BE32, }, 63 [OVPN_A_PEER_VPN_IPV6] = NLA_POLICY_EXACT_LEN(16), 64 [OVPN_A_PEER_LOCAL_IPV4] = { .type = NLA_BE32, }, 65 [OVPN_A_PEER_LOCAL_IPV6] = NLA_POLICY_EXACT_LEN(16), 66 [OVPN_A_PEER_LOCAL_PORT] = NLA_POLICY_MIN(NLA_BE16, 1), 67 [OVPN_A_PEER_KEEPALIVE_INTERVAL] = { .type = NLA_U32, }, 68 [OVPN_A_PEER_KEEPALIVE_TIMEOUT] = { .type = NLA_U32, }, 69 [OVPN_A_PEER_DEL_REASON] = NLA_POLICY_MAX(NLA_U32, 4), 70 [OVPN_A_PEER_VPN_RX_BYTES] = { .type = NLA_UINT, }, 71 [OVPN_A_PEER_VPN_TX_BYTES] = { .type = NLA_UINT, }, 72 [OVPN_A_PEER_VPN_RX_PACKETS] = { .type = NLA_UINT, }, 73 [OVPN_A_PEER_VPN_TX_PACKETS] = { .type = NLA_UINT, }, 74 [OVPN_A_PEER_LINK_RX_BYTES] = { .type = NLA_UINT, }, 75 [OVPN_A_PEER_LINK_TX_BYTES] = { .type = NLA_UINT, }, 76 [OVPN_A_PEER_LINK_RX_PACKETS] = { .type = NLA_UINT, }, 77 [OVPN_A_PEER_LINK_TX_PACKETS] = { .type = NLA_UINT, }, 78}; 79 80const struct nla_policy ovpn_peer_del_input_nl_policy[OVPN_A_PEER_ID + 1] = { 81 [OVPN_A_PEER_ID] = NLA_POLICY_FULL_RANGE(NLA_U32, &ovpn_a_peer_id_range), 82}; 83 84const struct nla_policy ovpn_peer_new_input_nl_policy[OVPN_A_PEER_KEEPALIVE_TIMEOUT + 1] = { 85 [OVPN_A_PEER_ID] = NLA_POLICY_FULL_RANGE(NLA_U32, &ovpn_a_peer_id_range), 86 [OVPN_A_PEER_REMOTE_IPV4] = { .type = NLA_BE32, }, 87 [OVPN_A_PEER_REMOTE_IPV6] = NLA_POLICY_EXACT_LEN(16), 88 [OVPN_A_PEER_REMOTE_IPV6_SCOPE_ID] = { .type = NLA_U32, }, 89 [OVPN_A_PEER_REMOTE_PORT] = NLA_POLICY_MIN(NLA_BE16, 1), 90 [OVPN_A_PEER_SOCKET] = { .type = NLA_U32, }, 91 [OVPN_A_PEER_VPN_IPV4] = { .type = NLA_BE32, }, 92 [OVPN_A_PEER_VPN_IPV6] = NLA_POLICY_EXACT_LEN(16), 93 [OVPN_A_PEER_LOCAL_IPV4] = { .type = NLA_BE32, }, 94 [OVPN_A_PEER_LOCAL_IPV6] = NLA_POLICY_EXACT_LEN(16), 95 [OVPN_A_PEER_KEEPALIVE_INTERVAL] = { .type = NLA_U32, }, 96 [OVPN_A_PEER_KEEPALIVE_TIMEOUT] = { .type = NLA_U32, }, 97}; 98 99const struct nla_policy ovpn_peer_set_input_nl_policy[OVPN_A_PEER_KEEPALIVE_TIMEOUT + 1] = { 100 [OVPN_A_PEER_ID] = NLA_POLICY_FULL_RANGE(NLA_U32, &ovpn_a_peer_id_range), 101 [OVPN_A_PEER_REMOTE_IPV4] = { .type = NLA_BE32, }, 102 [OVPN_A_PEER_REMOTE_IPV6] = NLA_POLICY_EXACT_LEN(16), 103 [OVPN_A_PEER_REMOTE_IPV6_SCOPE_ID] = { .type = NLA_U32, }, 104 [OVPN_A_PEER_REMOTE_PORT] = NLA_POLICY_MIN(NLA_BE16, 1), 105 [OVPN_A_PEER_VPN_IPV4] = { .type = NLA_BE32, }, 106 [OVPN_A_PEER_VPN_IPV6] = NLA_POLICY_EXACT_LEN(16), 107 [OVPN_A_PEER_LOCAL_IPV4] = { .type = NLA_BE32, }, 108 [OVPN_A_PEER_LOCAL_IPV6] = NLA_POLICY_EXACT_LEN(16), 109 [OVPN_A_PEER_KEEPALIVE_INTERVAL] = { .type = NLA_U32, }, 110 [OVPN_A_PEER_KEEPALIVE_TIMEOUT] = { .type = NLA_U32, }, 111}; 112 113/* OVPN_CMD_PEER_NEW - do */ 114static const struct nla_policy ovpn_peer_new_nl_policy[OVPN_A_PEER + 1] = { 115 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 116 [OVPN_A_PEER] = NLA_POLICY_NESTED(ovpn_peer_new_input_nl_policy), 117}; 118 119/* OVPN_CMD_PEER_SET - do */ 120static const struct nla_policy ovpn_peer_set_nl_policy[OVPN_A_PEER + 1] = { 121 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 122 [OVPN_A_PEER] = NLA_POLICY_NESTED(ovpn_peer_set_input_nl_policy), 123}; 124 125/* OVPN_CMD_PEER_GET - do */ 126static const struct nla_policy ovpn_peer_get_do_nl_policy[OVPN_A_PEER + 1] = { 127 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 128 [OVPN_A_PEER] = NLA_POLICY_NESTED(ovpn_peer_nl_policy), 129}; 130 131/* OVPN_CMD_PEER_GET - dump */ 132static const struct nla_policy ovpn_peer_get_dump_nl_policy[OVPN_A_IFINDEX + 1] = { 133 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 134}; 135 136/* OVPN_CMD_PEER_DEL - do */ 137static const struct nla_policy ovpn_peer_del_nl_policy[OVPN_A_PEER + 1] = { 138 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 139 [OVPN_A_PEER] = NLA_POLICY_NESTED(ovpn_peer_del_input_nl_policy), 140}; 141 142/* OVPN_CMD_KEY_NEW - do */ 143static const struct nla_policy ovpn_key_new_nl_policy[OVPN_A_KEYCONF + 1] = { 144 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 145 [OVPN_A_KEYCONF] = NLA_POLICY_NESTED(ovpn_keyconf_nl_policy), 146}; 147 148/* OVPN_CMD_KEY_GET - do */ 149static const struct nla_policy ovpn_key_get_nl_policy[OVPN_A_KEYCONF + 1] = { 150 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 151 [OVPN_A_KEYCONF] = NLA_POLICY_NESTED(ovpn_keyconf_get_nl_policy), 152}; 153 154/* OVPN_CMD_KEY_SWAP - do */ 155static const struct nla_policy ovpn_key_swap_nl_policy[OVPN_A_KEYCONF + 1] = { 156 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 157 [OVPN_A_KEYCONF] = NLA_POLICY_NESTED(ovpn_keyconf_swap_input_nl_policy), 158}; 159 160/* OVPN_CMD_KEY_DEL - do */ 161static const struct nla_policy ovpn_key_del_nl_policy[OVPN_A_KEYCONF + 1] = { 162 [OVPN_A_IFINDEX] = { .type = NLA_U32, }, 163 [OVPN_A_KEYCONF] = NLA_POLICY_NESTED(ovpn_keyconf_del_input_nl_policy), 164}; 165 166/* Ops table for ovpn */ 167static const struct genl_split_ops ovpn_nl_ops[] = { 168 { 169 .cmd = OVPN_CMD_PEER_NEW, 170 .pre_doit = ovpn_nl_pre_doit, 171 .doit = ovpn_nl_peer_new_doit, 172 .post_doit = ovpn_nl_post_doit, 173 .policy = ovpn_peer_new_nl_policy, 174 .maxattr = OVPN_A_PEER, 175 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 176 }, 177 { 178 .cmd = OVPN_CMD_PEER_SET, 179 .pre_doit = ovpn_nl_pre_doit, 180 .doit = ovpn_nl_peer_set_doit, 181 .post_doit = ovpn_nl_post_doit, 182 .policy = ovpn_peer_set_nl_policy, 183 .maxattr = OVPN_A_PEER, 184 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 185 }, 186 { 187 .cmd = OVPN_CMD_PEER_GET, 188 .pre_doit = ovpn_nl_pre_doit, 189 .doit = ovpn_nl_peer_get_doit, 190 .post_doit = ovpn_nl_post_doit, 191 .policy = ovpn_peer_get_do_nl_policy, 192 .maxattr = OVPN_A_PEER, 193 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 194 }, 195 { 196 .cmd = OVPN_CMD_PEER_GET, 197 .dumpit = ovpn_nl_peer_get_dumpit, 198 .policy = ovpn_peer_get_dump_nl_policy, 199 .maxattr = OVPN_A_IFINDEX, 200 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DUMP, 201 }, 202 { 203 .cmd = OVPN_CMD_PEER_DEL, 204 .pre_doit = ovpn_nl_pre_doit, 205 .doit = ovpn_nl_peer_del_doit, 206 .post_doit = ovpn_nl_post_doit, 207 .policy = ovpn_peer_del_nl_policy, 208 .maxattr = OVPN_A_PEER, 209 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 210 }, 211 { 212 .cmd = OVPN_CMD_KEY_NEW, 213 .pre_doit = ovpn_nl_pre_doit, 214 .doit = ovpn_nl_key_new_doit, 215 .post_doit = ovpn_nl_post_doit, 216 .policy = ovpn_key_new_nl_policy, 217 .maxattr = OVPN_A_KEYCONF, 218 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 219 }, 220 { 221 .cmd = OVPN_CMD_KEY_GET, 222 .pre_doit = ovpn_nl_pre_doit, 223 .doit = ovpn_nl_key_get_doit, 224 .post_doit = ovpn_nl_post_doit, 225 .policy = ovpn_key_get_nl_policy, 226 .maxattr = OVPN_A_KEYCONF, 227 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 228 }, 229 { 230 .cmd = OVPN_CMD_KEY_SWAP, 231 .pre_doit = ovpn_nl_pre_doit, 232 .doit = ovpn_nl_key_swap_doit, 233 .post_doit = ovpn_nl_post_doit, 234 .policy = ovpn_key_swap_nl_policy, 235 .maxattr = OVPN_A_KEYCONF, 236 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 237 }, 238 { 239 .cmd = OVPN_CMD_KEY_DEL, 240 .pre_doit = ovpn_nl_pre_doit, 241 .doit = ovpn_nl_key_del_doit, 242 .post_doit = ovpn_nl_post_doit, 243 .policy = ovpn_key_del_nl_policy, 244 .maxattr = OVPN_A_KEYCONF, 245 .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 246 }, 247}; 248 249static const struct genl_multicast_group ovpn_nl_mcgrps[] = { 250 [OVPN_NLGRP_PEERS] = { "peers", }, 251}; 252 253struct genl_family ovpn_nl_family __ro_after_init = { 254 .name = OVPN_FAMILY_NAME, 255 .version = OVPN_FAMILY_VERSION, 256 .netnsok = true, 257 .parallel_ops = true, 258 .module = THIS_MODULE, 259 .split_ops = ovpn_nl_ops, 260 .n_split_ops = ARRAY_SIZE(ovpn_nl_ops), 261 .mcgrps = ovpn_nl_mcgrps, 262 .n_mcgrps = ARRAY_SIZE(ovpn_nl_mcgrps), 263};
~/
Read-only file preview.