@@ -29,6 +29,22 @@ const struct nla_policy ovpn_keyconf_nl_policy[OVPN_A_KEYCONF_DECRYPT_DIR + 1] =
2929 [OVPN_A_KEYCONF_DECRYPT_DIR ] = NLA_POLICY_NESTED (ovpn_keydir_nl_policy ),
3030};
3131
32+ const struct nla_policy ovpn_keyconf_del_input_nl_policy [OVPN_A_KEYCONF_SLOT + 1 ] = {
33+ [OVPN_A_KEYCONF_PEER_ID ] = NLA_POLICY_FULL_RANGE (NLA_U32 , & ovpn_a_keyconf_peer_id_range ),
34+ [OVPN_A_KEYCONF_SLOT ] = NLA_POLICY_MAX (NLA_U32 , 1 ),
35+ };
36+
37+ const struct nla_policy ovpn_keyconf_get_nl_policy [OVPN_A_KEYCONF_CIPHER_ALG + 1 ] = {
38+ [OVPN_A_KEYCONF_PEER_ID ] = NLA_POLICY_FULL_RANGE (NLA_U32 , & ovpn_a_keyconf_peer_id_range ),
39+ [OVPN_A_KEYCONF_SLOT ] = NLA_POLICY_MAX (NLA_U32 , 1 ),
40+ [OVPN_A_KEYCONF_KEY_ID ] = NLA_POLICY_MAX (NLA_U32 , 7 ),
41+ [OVPN_A_KEYCONF_CIPHER_ALG ] = NLA_POLICY_MAX (NLA_U32 , 2 ),
42+ };
43+
44+ const struct nla_policy ovpn_keyconf_swap_input_nl_policy [OVPN_A_KEYCONF_PEER_ID + 1 ] = {
45+ [OVPN_A_KEYCONF_PEER_ID ] = NLA_POLICY_FULL_RANGE (NLA_U32 , & ovpn_a_keyconf_peer_id_range ),
46+ };
47+
3248const struct nla_policy ovpn_keydir_nl_policy [OVPN_A_KEYDIR_NONCE_TAIL + 1 ] = {
3349 [OVPN_A_KEYDIR_CIPHER_KEY ] = NLA_POLICY_MAX_LEN (256 ),
3450 [OVPN_A_KEYDIR_NONCE_TAIL ] = NLA_POLICY_EXACT_LEN (OVPN_NONCE_TAIL_SIZE ),
@@ -60,16 +76,49 @@ const struct nla_policy ovpn_peer_nl_policy[OVPN_A_PEER_LINK_TX_PACKETS + 1] = {
6076 [OVPN_A_PEER_LINK_TX_PACKETS ] = { .type = NLA_UINT , },
6177};
6278
79+ const struct nla_policy ovpn_peer_del_input_nl_policy [OVPN_A_PEER_ID + 1 ] = {
80+ [OVPN_A_PEER_ID ] = NLA_POLICY_FULL_RANGE (NLA_U32 , & ovpn_a_peer_id_range ),
81+ };
82+
83+ const struct nla_policy ovpn_peer_new_input_nl_policy [OVPN_A_PEER_KEEPALIVE_TIMEOUT + 1 ] = {
84+ [OVPN_A_PEER_ID ] = NLA_POLICY_FULL_RANGE (NLA_U32 , & ovpn_a_peer_id_range ),
85+ [OVPN_A_PEER_REMOTE_IPV4 ] = { .type = NLA_BE32 , },
86+ [OVPN_A_PEER_REMOTE_IPV6 ] = NLA_POLICY_EXACT_LEN (16 ),
87+ [OVPN_A_PEER_REMOTE_IPV6_SCOPE_ID ] = { .type = NLA_U32 , },
88+ [OVPN_A_PEER_REMOTE_PORT ] = NLA_POLICY_MIN (NLA_BE16 , 1 ),
89+ [OVPN_A_PEER_SOCKET ] = { .type = NLA_U32 , },
90+ [OVPN_A_PEER_VPN_IPV4 ] = { .type = NLA_BE32 , },
91+ [OVPN_A_PEER_VPN_IPV6 ] = NLA_POLICY_EXACT_LEN (16 ),
92+ [OVPN_A_PEER_LOCAL_IPV4 ] = { .type = NLA_BE32 , },
93+ [OVPN_A_PEER_LOCAL_IPV6 ] = NLA_POLICY_EXACT_LEN (16 ),
94+ [OVPN_A_PEER_KEEPALIVE_INTERVAL ] = { .type = NLA_U32 , },
95+ [OVPN_A_PEER_KEEPALIVE_TIMEOUT ] = { .type = NLA_U32 , },
96+ };
97+
98+ const struct nla_policy ovpn_peer_set_input_nl_policy [OVPN_A_PEER_KEEPALIVE_TIMEOUT + 1 ] = {
99+ [OVPN_A_PEER_ID ] = NLA_POLICY_FULL_RANGE (NLA_U32 , & ovpn_a_peer_id_range ),
100+ [OVPN_A_PEER_REMOTE_IPV4 ] = { .type = NLA_BE32 , },
101+ [OVPN_A_PEER_REMOTE_IPV6 ] = NLA_POLICY_EXACT_LEN (16 ),
102+ [OVPN_A_PEER_REMOTE_IPV6_SCOPE_ID ] = { .type = NLA_U32 , },
103+ [OVPN_A_PEER_REMOTE_PORT ] = NLA_POLICY_MIN (NLA_BE16 , 1 ),
104+ [OVPN_A_PEER_VPN_IPV4 ] = { .type = NLA_BE32 , },
105+ [OVPN_A_PEER_VPN_IPV6 ] = NLA_POLICY_EXACT_LEN (16 ),
106+ [OVPN_A_PEER_LOCAL_IPV4 ] = { .type = NLA_BE32 , },
107+ [OVPN_A_PEER_LOCAL_IPV6 ] = NLA_POLICY_EXACT_LEN (16 ),
108+ [OVPN_A_PEER_KEEPALIVE_INTERVAL ] = { .type = NLA_U32 , },
109+ [OVPN_A_PEER_KEEPALIVE_TIMEOUT ] = { .type = NLA_U32 , },
110+ };
111+
63112/* OVPN_CMD_PEER_NEW - do */
64113static const struct nla_policy ovpn_peer_new_nl_policy [OVPN_A_PEER + 1 ] = {
65114 [OVPN_A_IFINDEX ] = { .type = NLA_U32 , },
66- [OVPN_A_PEER ] = NLA_POLICY_NESTED (ovpn_peer_nl_policy ),
115+ [OVPN_A_PEER ] = NLA_POLICY_NESTED (ovpn_peer_new_input_nl_policy ),
67116};
68117
69118/* OVPN_CMD_PEER_SET - do */
70119static const struct nla_policy ovpn_peer_set_nl_policy [OVPN_A_PEER + 1 ] = {
71120 [OVPN_A_IFINDEX ] = { .type = NLA_U32 , },
72- [OVPN_A_PEER ] = NLA_POLICY_NESTED (ovpn_peer_nl_policy ),
121+ [OVPN_A_PEER ] = NLA_POLICY_NESTED (ovpn_peer_set_input_nl_policy ),
73122};
74123
75124/* OVPN_CMD_PEER_GET - do */
@@ -86,7 +135,7 @@ static const struct nla_policy ovpn_peer_get_dump_nl_policy[OVPN_A_IFINDEX + 1]
86135/* OVPN_CMD_PEER_DEL - do */
87136static const struct nla_policy ovpn_peer_del_nl_policy [OVPN_A_PEER + 1 ] = {
88137 [OVPN_A_IFINDEX ] = { .type = NLA_U32 , },
89- [OVPN_A_PEER ] = NLA_POLICY_NESTED (ovpn_peer_nl_policy ),
138+ [OVPN_A_PEER ] = NLA_POLICY_NESTED (ovpn_peer_del_input_nl_policy ),
90139};
91140
92141/* OVPN_CMD_KEY_NEW - do */
@@ -98,19 +147,19 @@ static const struct nla_policy ovpn_key_new_nl_policy[OVPN_A_KEYCONF + 1] = {
98147/* OVPN_CMD_KEY_GET - do */
99148static const struct nla_policy ovpn_key_get_nl_policy [OVPN_A_KEYCONF + 1 ] = {
100149 [OVPN_A_IFINDEX ] = { .type = NLA_U32 , },
101- [OVPN_A_KEYCONF ] = NLA_POLICY_NESTED (ovpn_keyconf_nl_policy ),
150+ [OVPN_A_KEYCONF ] = NLA_POLICY_NESTED (ovpn_keyconf_get_nl_policy ),
102151};
103152
104153/* OVPN_CMD_KEY_SWAP - do */
105154static const struct nla_policy ovpn_key_swap_nl_policy [OVPN_A_KEYCONF + 1 ] = {
106155 [OVPN_A_IFINDEX ] = { .type = NLA_U32 , },
107- [OVPN_A_KEYCONF ] = NLA_POLICY_NESTED (ovpn_keyconf_nl_policy ),
156+ [OVPN_A_KEYCONF ] = NLA_POLICY_NESTED (ovpn_keyconf_swap_input_nl_policy ),
108157};
109158
110159/* OVPN_CMD_KEY_DEL - do */
111160static const struct nla_policy ovpn_key_del_nl_policy [OVPN_A_KEYCONF + 1 ] = {
112161 [OVPN_A_IFINDEX ] = { .type = NLA_U32 , },
113- [OVPN_A_KEYCONF ] = NLA_POLICY_NESTED (ovpn_keyconf_nl_policy ),
162+ [OVPN_A_KEYCONF ] = NLA_POLICY_NESTED (ovpn_keyconf_del_input_nl_policy ),
114163};
115164
116165/* Ops table for ovpn */
0 commit comments