hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/net/tipc/netlink.c
....@@ -83,6 +83,7 @@
8383 [TIPC_NLA_NET_ADDR] = { .type = NLA_U32 },
8484 [TIPC_NLA_NET_NODEID] = { .type = NLA_U64 },
8585 [TIPC_NLA_NET_NODEID_W1] = { .type = NLA_U64 },
86
+ [TIPC_NLA_NET_ADDR_LEGACY] = { .type = NLA_FLAG }
8687 };
8788
8889 const struct nla_policy tipc_nl_link_policy[TIPC_NLA_LINK_MAX + 1] = {
....@@ -102,7 +103,13 @@
102103 const struct nla_policy tipc_nl_node_policy[TIPC_NLA_NODE_MAX + 1] = {
103104 [TIPC_NLA_NODE_UNSPEC] = { .type = NLA_UNSPEC },
104105 [TIPC_NLA_NODE_ADDR] = { .type = NLA_U32 },
105
- [TIPC_NLA_NODE_UP] = { .type = NLA_FLAG }
106
+ [TIPC_NLA_NODE_UP] = { .type = NLA_FLAG },
107
+ [TIPC_NLA_NODE_ID] = { .type = NLA_BINARY,
108
+ .len = TIPC_NODEID_LEN},
109
+ [TIPC_NLA_NODE_KEY] = { .type = NLA_BINARY,
110
+ .len = TIPC_AEAD_KEY_SIZE_MAX},
111
+ [TIPC_NLA_NODE_KEY_MASTER] = { .type = NLA_FLAG },
112
+ [TIPC_NLA_NODE_REKEYING] = { .type = NLA_U32 },
106113 };
107114
108115 /* Properties valid for media, bearer and link */
....@@ -111,7 +118,9 @@
111118 [TIPC_NLA_PROP_PRIO] = { .type = NLA_U32 },
112119 [TIPC_NLA_PROP_TOL] = { .type = NLA_U32 },
113120 [TIPC_NLA_PROP_WIN] = { .type = NLA_U32 },
114
- [TIPC_NLA_PROP_MTU] = { .type = NLA_U32 }
121
+ [TIPC_NLA_PROP_MTU] = { .type = NLA_U32 },
122
+ [TIPC_NLA_PROP_BROADCAST] = { .type = NLA_U32 },
123
+ [TIPC_NLA_PROP_BROADCAST_RATIO] = { .type = NLA_U32 }
115124 };
116125
117126 const struct nla_policy tipc_nl_bearer_policy[TIPC_NLA_BEARER_MAX + 1] = {
....@@ -142,117 +151,137 @@
142151 static const struct genl_ops tipc_genl_v2_ops[] = {
143152 {
144153 .cmd = TIPC_NL_BEARER_DISABLE,
154
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
145155 .doit = tipc_nl_bearer_disable,
146
- .policy = tipc_nl_policy,
147156 },
148157 {
149158 .cmd = TIPC_NL_BEARER_ENABLE,
159
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
150160 .doit = tipc_nl_bearer_enable,
151
- .policy = tipc_nl_policy,
152161 },
153162 {
154163 .cmd = TIPC_NL_BEARER_GET,
164
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
155165 .doit = tipc_nl_bearer_get,
156166 .dumpit = tipc_nl_bearer_dump,
157
- .policy = tipc_nl_policy,
158167 },
159168 {
160169 .cmd = TIPC_NL_BEARER_ADD,
170
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
161171 .doit = tipc_nl_bearer_add,
162
- .policy = tipc_nl_policy,
163172 },
164173 {
165174 .cmd = TIPC_NL_BEARER_SET,
175
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
166176 .doit = tipc_nl_bearer_set,
167
- .policy = tipc_nl_policy,
168177 },
169178 {
170179 .cmd = TIPC_NL_SOCK_GET,
180
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
171181 .start = tipc_dump_start,
172182 .dumpit = tipc_nl_sk_dump,
173183 .done = tipc_dump_done,
174
- .policy = tipc_nl_policy,
175184 },
176185 {
177186 .cmd = TIPC_NL_PUBL_GET,
187
+ .validate = GENL_DONT_VALIDATE_STRICT |
188
+ GENL_DONT_VALIDATE_DUMP_STRICT,
178189 .dumpit = tipc_nl_publ_dump,
179
- .policy = tipc_nl_policy,
180190 },
181191 {
182192 .cmd = TIPC_NL_LINK_GET,
193
+ .validate = GENL_DONT_VALIDATE_STRICT,
183194 .doit = tipc_nl_node_get_link,
184195 .dumpit = tipc_nl_node_dump_link,
185
- .policy = tipc_nl_policy,
186196 },
187197 {
188198 .cmd = TIPC_NL_LINK_SET,
199
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
189200 .doit = tipc_nl_node_set_link,
190
- .policy = tipc_nl_policy,
191201 },
192202 {
193203 .cmd = TIPC_NL_LINK_RESET_STATS,
204
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
194205 .doit = tipc_nl_node_reset_link_stats,
195
- .policy = tipc_nl_policy,
196206 },
197207 {
198208 .cmd = TIPC_NL_MEDIA_GET,
209
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
199210 .doit = tipc_nl_media_get,
200211 .dumpit = tipc_nl_media_dump,
201
- .policy = tipc_nl_policy,
202212 },
203213 {
204214 .cmd = TIPC_NL_MEDIA_SET,
215
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
205216 .doit = tipc_nl_media_set,
206
- .policy = tipc_nl_policy,
207217 },
208218 {
209219 .cmd = TIPC_NL_NODE_GET,
220
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
210221 .dumpit = tipc_nl_node_dump,
211
- .policy = tipc_nl_policy,
212222 },
213223 {
214224 .cmd = TIPC_NL_NET_GET,
225
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
215226 .dumpit = tipc_nl_net_dump,
216
- .policy = tipc_nl_policy,
217227 },
218228 {
219229 .cmd = TIPC_NL_NET_SET,
230
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
220231 .doit = tipc_nl_net_set,
221
- .policy = tipc_nl_policy,
222232 },
223233 {
224234 .cmd = TIPC_NL_NAME_TABLE_GET,
235
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
225236 .dumpit = tipc_nl_name_table_dump,
226
- .policy = tipc_nl_policy,
227237 },
228238 {
229239 .cmd = TIPC_NL_MON_SET,
240
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
230241 .doit = tipc_nl_node_set_monitor,
231
- .policy = tipc_nl_policy,
232242 },
233243 {
234244 .cmd = TIPC_NL_MON_GET,
245
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
235246 .doit = tipc_nl_node_get_monitor,
236247 .dumpit = tipc_nl_node_dump_monitor,
237
- .policy = tipc_nl_policy,
238248 },
239249 {
240250 .cmd = TIPC_NL_MON_PEER_GET,
251
+ .validate = GENL_DONT_VALIDATE_STRICT |
252
+ GENL_DONT_VALIDATE_DUMP_STRICT,
241253 .dumpit = tipc_nl_node_dump_monitor_peer,
242
- .policy = tipc_nl_policy,
243254 },
244255 {
245256 .cmd = TIPC_NL_PEER_REMOVE,
257
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
246258 .doit = tipc_nl_peer_rm,
247
- .policy = tipc_nl_policy,
248259 },
249260 #ifdef CONFIG_TIPC_MEDIA_UDP
250261 {
251262 .cmd = TIPC_NL_UDP_GET_REMOTEIP,
263
+ .validate = GENL_DONT_VALIDATE_STRICT |
264
+ GENL_DONT_VALIDATE_DUMP_STRICT,
252265 .dumpit = tipc_udp_nl_dump_remoteip,
253
- .policy = tipc_nl_policy,
254266 },
255267 #endif
268
+#ifdef CONFIG_TIPC_CRYPTO
269
+ {
270
+ .cmd = TIPC_NL_KEY_SET,
271
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
272
+ .doit = tipc_nl_node_set_key,
273
+ },
274
+ {
275
+ .cmd = TIPC_NL_KEY_FLUSH,
276
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
277
+ .doit = tipc_nl_node_flush_key,
278
+ },
279
+#endif
280
+ {
281
+ .cmd = TIPC_NL_ADDR_LEGACY_GET,
282
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
283
+ .doit = tipc_nl_net_addr_legacy_get,
284
+ },
256285 };
257286
258287 struct genl_family tipc_genl_family __ro_after_init = {
....@@ -260,23 +289,12 @@
260289 .version = TIPC_GENL_V2_VERSION,
261290 .hdrsize = 0,
262291 .maxattr = TIPC_NLA_MAX,
292
+ .policy = tipc_nl_policy,
263293 .netnsok = true,
264294 .module = THIS_MODULE,
265295 .ops = tipc_genl_v2_ops,
266296 .n_ops = ARRAY_SIZE(tipc_genl_v2_ops),
267297 };
268
-
269
-int tipc_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr ***attr)
270
-{
271
- u32 maxattr = tipc_genl_family.maxattr;
272
-
273
- *attr = genl_family_attrbuf(&tipc_genl_family);
274
- if (!*attr)
275
- return -EOPNOTSUPP;
276
-
277
- return nlmsg_parse(nlh, GENL_HDRLEN, *attr, maxattr, tipc_nl_policy,
278
- NULL);
279
-}
280298
281299 int __init tipc_netlink_start(void)
282300 {