.. | .. |
---|
83 | 83 | [TIPC_NLA_NET_ADDR] = { .type = NLA_U32 }, |
---|
84 | 84 | [TIPC_NLA_NET_NODEID] = { .type = NLA_U64 }, |
---|
85 | 85 | [TIPC_NLA_NET_NODEID_W1] = { .type = NLA_U64 }, |
---|
| 86 | + [TIPC_NLA_NET_ADDR_LEGACY] = { .type = NLA_FLAG } |
---|
86 | 87 | }; |
---|
87 | 88 | |
---|
88 | 89 | const struct nla_policy tipc_nl_link_policy[TIPC_NLA_LINK_MAX + 1] = { |
---|
.. | .. |
---|
102 | 103 | const struct nla_policy tipc_nl_node_policy[TIPC_NLA_NODE_MAX + 1] = { |
---|
103 | 104 | [TIPC_NLA_NODE_UNSPEC] = { .type = NLA_UNSPEC }, |
---|
104 | 105 | [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 }, |
---|
106 | 113 | }; |
---|
107 | 114 | |
---|
108 | 115 | /* Properties valid for media, bearer and link */ |
---|
.. | .. |
---|
111 | 118 | [TIPC_NLA_PROP_PRIO] = { .type = NLA_U32 }, |
---|
112 | 119 | [TIPC_NLA_PROP_TOL] = { .type = NLA_U32 }, |
---|
113 | 120 | [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 } |
---|
115 | 124 | }; |
---|
116 | 125 | |
---|
117 | 126 | const struct nla_policy tipc_nl_bearer_policy[TIPC_NLA_BEARER_MAX + 1] = { |
---|
.. | .. |
---|
142 | 151 | static const struct genl_ops tipc_genl_v2_ops[] = { |
---|
143 | 152 | { |
---|
144 | 153 | .cmd = TIPC_NL_BEARER_DISABLE, |
---|
| 154 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
145 | 155 | .doit = tipc_nl_bearer_disable, |
---|
146 | | - .policy = tipc_nl_policy, |
---|
147 | 156 | }, |
---|
148 | 157 | { |
---|
149 | 158 | .cmd = TIPC_NL_BEARER_ENABLE, |
---|
| 159 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
150 | 160 | .doit = tipc_nl_bearer_enable, |
---|
151 | | - .policy = tipc_nl_policy, |
---|
152 | 161 | }, |
---|
153 | 162 | { |
---|
154 | 163 | .cmd = TIPC_NL_BEARER_GET, |
---|
| 164 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
155 | 165 | .doit = tipc_nl_bearer_get, |
---|
156 | 166 | .dumpit = tipc_nl_bearer_dump, |
---|
157 | | - .policy = tipc_nl_policy, |
---|
158 | 167 | }, |
---|
159 | 168 | { |
---|
160 | 169 | .cmd = TIPC_NL_BEARER_ADD, |
---|
| 170 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
161 | 171 | .doit = tipc_nl_bearer_add, |
---|
162 | | - .policy = tipc_nl_policy, |
---|
163 | 172 | }, |
---|
164 | 173 | { |
---|
165 | 174 | .cmd = TIPC_NL_BEARER_SET, |
---|
| 175 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
166 | 176 | .doit = tipc_nl_bearer_set, |
---|
167 | | - .policy = tipc_nl_policy, |
---|
168 | 177 | }, |
---|
169 | 178 | { |
---|
170 | 179 | .cmd = TIPC_NL_SOCK_GET, |
---|
| 180 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
171 | 181 | .start = tipc_dump_start, |
---|
172 | 182 | .dumpit = tipc_nl_sk_dump, |
---|
173 | 183 | .done = tipc_dump_done, |
---|
174 | | - .policy = tipc_nl_policy, |
---|
175 | 184 | }, |
---|
176 | 185 | { |
---|
177 | 186 | .cmd = TIPC_NL_PUBL_GET, |
---|
| 187 | + .validate = GENL_DONT_VALIDATE_STRICT | |
---|
| 188 | + GENL_DONT_VALIDATE_DUMP_STRICT, |
---|
178 | 189 | .dumpit = tipc_nl_publ_dump, |
---|
179 | | - .policy = tipc_nl_policy, |
---|
180 | 190 | }, |
---|
181 | 191 | { |
---|
182 | 192 | .cmd = TIPC_NL_LINK_GET, |
---|
| 193 | + .validate = GENL_DONT_VALIDATE_STRICT, |
---|
183 | 194 | .doit = tipc_nl_node_get_link, |
---|
184 | 195 | .dumpit = tipc_nl_node_dump_link, |
---|
185 | | - .policy = tipc_nl_policy, |
---|
186 | 196 | }, |
---|
187 | 197 | { |
---|
188 | 198 | .cmd = TIPC_NL_LINK_SET, |
---|
| 199 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
189 | 200 | .doit = tipc_nl_node_set_link, |
---|
190 | | - .policy = tipc_nl_policy, |
---|
191 | 201 | }, |
---|
192 | 202 | { |
---|
193 | 203 | .cmd = TIPC_NL_LINK_RESET_STATS, |
---|
| 204 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
194 | 205 | .doit = tipc_nl_node_reset_link_stats, |
---|
195 | | - .policy = tipc_nl_policy, |
---|
196 | 206 | }, |
---|
197 | 207 | { |
---|
198 | 208 | .cmd = TIPC_NL_MEDIA_GET, |
---|
| 209 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
199 | 210 | .doit = tipc_nl_media_get, |
---|
200 | 211 | .dumpit = tipc_nl_media_dump, |
---|
201 | | - .policy = tipc_nl_policy, |
---|
202 | 212 | }, |
---|
203 | 213 | { |
---|
204 | 214 | .cmd = TIPC_NL_MEDIA_SET, |
---|
| 215 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
205 | 216 | .doit = tipc_nl_media_set, |
---|
206 | | - .policy = tipc_nl_policy, |
---|
207 | 217 | }, |
---|
208 | 218 | { |
---|
209 | 219 | .cmd = TIPC_NL_NODE_GET, |
---|
| 220 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
210 | 221 | .dumpit = tipc_nl_node_dump, |
---|
211 | | - .policy = tipc_nl_policy, |
---|
212 | 222 | }, |
---|
213 | 223 | { |
---|
214 | 224 | .cmd = TIPC_NL_NET_GET, |
---|
| 225 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
215 | 226 | .dumpit = tipc_nl_net_dump, |
---|
216 | | - .policy = tipc_nl_policy, |
---|
217 | 227 | }, |
---|
218 | 228 | { |
---|
219 | 229 | .cmd = TIPC_NL_NET_SET, |
---|
| 230 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
220 | 231 | .doit = tipc_nl_net_set, |
---|
221 | | - .policy = tipc_nl_policy, |
---|
222 | 232 | }, |
---|
223 | 233 | { |
---|
224 | 234 | .cmd = TIPC_NL_NAME_TABLE_GET, |
---|
| 235 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
225 | 236 | .dumpit = tipc_nl_name_table_dump, |
---|
226 | | - .policy = tipc_nl_policy, |
---|
227 | 237 | }, |
---|
228 | 238 | { |
---|
229 | 239 | .cmd = TIPC_NL_MON_SET, |
---|
| 240 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
230 | 241 | .doit = tipc_nl_node_set_monitor, |
---|
231 | | - .policy = tipc_nl_policy, |
---|
232 | 242 | }, |
---|
233 | 243 | { |
---|
234 | 244 | .cmd = TIPC_NL_MON_GET, |
---|
| 245 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
235 | 246 | .doit = tipc_nl_node_get_monitor, |
---|
236 | 247 | .dumpit = tipc_nl_node_dump_monitor, |
---|
237 | | - .policy = tipc_nl_policy, |
---|
238 | 248 | }, |
---|
239 | 249 | { |
---|
240 | 250 | .cmd = TIPC_NL_MON_PEER_GET, |
---|
| 251 | + .validate = GENL_DONT_VALIDATE_STRICT | |
---|
| 252 | + GENL_DONT_VALIDATE_DUMP_STRICT, |
---|
241 | 253 | .dumpit = tipc_nl_node_dump_monitor_peer, |
---|
242 | | - .policy = tipc_nl_policy, |
---|
243 | 254 | }, |
---|
244 | 255 | { |
---|
245 | 256 | .cmd = TIPC_NL_PEER_REMOVE, |
---|
| 257 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
246 | 258 | .doit = tipc_nl_peer_rm, |
---|
247 | | - .policy = tipc_nl_policy, |
---|
248 | 259 | }, |
---|
249 | 260 | #ifdef CONFIG_TIPC_MEDIA_UDP |
---|
250 | 261 | { |
---|
251 | 262 | .cmd = TIPC_NL_UDP_GET_REMOTEIP, |
---|
| 263 | + .validate = GENL_DONT_VALIDATE_STRICT | |
---|
| 264 | + GENL_DONT_VALIDATE_DUMP_STRICT, |
---|
252 | 265 | .dumpit = tipc_udp_nl_dump_remoteip, |
---|
253 | | - .policy = tipc_nl_policy, |
---|
254 | 266 | }, |
---|
255 | 267 | #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 | + }, |
---|
256 | 285 | }; |
---|
257 | 286 | |
---|
258 | 287 | struct genl_family tipc_genl_family __ro_after_init = { |
---|
.. | .. |
---|
260 | 289 | .version = TIPC_GENL_V2_VERSION, |
---|
261 | 290 | .hdrsize = 0, |
---|
262 | 291 | .maxattr = TIPC_NLA_MAX, |
---|
| 292 | + .policy = tipc_nl_policy, |
---|
263 | 293 | .netnsok = true, |
---|
264 | 294 | .module = THIS_MODULE, |
---|
265 | 295 | .ops = tipc_genl_v2_ops, |
---|
266 | 296 | .n_ops = ARRAY_SIZE(tipc_genl_v2_ops), |
---|
267 | 297 | }; |
---|
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 | | -} |
---|
280 | 298 | |
---|
281 | 299 | int __init tipc_netlink_start(void) |
---|
282 | 300 | { |
---|