@@ -175,14 +175,13 @@ bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk,
175175
176176static struct mptcp_sock * mptcp_userspace_pm_get_sock (const struct genl_info * info )
177177{
178- struct nlattr * token = info -> attrs [MPTCP_PM_ATTR_TOKEN ];
179178 struct mptcp_sock * msk ;
179+ struct nlattr * token ;
180180
181- if (!token ) {
182- GENL_SET_ERR_MSG (info , "missing required token" );
181+ if (GENL_REQ_ATTR_CHECK (info , MPTCP_PM_ATTR_TOKEN ))
183182 return NULL ;
184- }
185183
184+ token = info -> attrs [MPTCP_PM_ATTR_TOKEN ];
186185 msk = mptcp_token_get_sock (genl_info_net (info ), nla_get_u32 (token ));
187186 if (!msk ) {
188187 NL_SET_ERR_MSG_ATTR (info -> extack , token , "invalid token" );
@@ -201,23 +200,22 @@ static struct mptcp_sock *mptcp_userspace_pm_get_sock(const struct genl_info *in
201200
202201int mptcp_pm_nl_announce_doit (struct sk_buff * skb , struct genl_info * info )
203202{
204- struct nlattr * addr = info -> attrs [MPTCP_PM_ATTR_ADDR ];
205203 struct mptcp_pm_addr_entry addr_val ;
206204 struct mptcp_sock * msk ;
205+ struct nlattr * addr ;
207206 int err = - EINVAL ;
208207 struct sock * sk ;
209208
210- if (!addr ) {
211- GENL_SET_ERR_MSG (info , "missing required address" );
209+ if (GENL_REQ_ATTR_CHECK (info , MPTCP_PM_ATTR_ADDR ))
212210 return err ;
213- }
214211
215212 msk = mptcp_userspace_pm_get_sock (info );
216213 if (!msk )
217214 return err ;
218215
219216 sk = (struct sock * )msk ;
220217
218+ addr = info -> attrs [MPTCP_PM_ATTR_ADDR ];
221219 err = mptcp_pm_parse_entry (addr , info , true, & addr_val );
222220 if (err < 0 ) {
223221 GENL_SET_ERR_MSG (info , "error parsing local address" );
@@ -319,18 +317,17 @@ void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk,
319317
320318int mptcp_pm_nl_remove_doit (struct sk_buff * skb , struct genl_info * info )
321319{
322- struct nlattr * id = info -> attrs [MPTCP_PM_ATTR_LOC_ID ];
323320 struct mptcp_pm_addr_entry * match ;
324321 struct mptcp_sock * msk ;
322+ struct nlattr * id ;
325323 int err = - EINVAL ;
326324 struct sock * sk ;
327325 u8 id_val ;
328326
329- if (!id ) {
330- GENL_SET_ERR_MSG (info , "missing required ID" );
327+ if (GENL_REQ_ATTR_CHECK (info , MPTCP_PM_ATTR_LOC_ID ))
331328 return err ;
332- }
333329
330+ id = info -> attrs [MPTCP_PM_ATTR_LOC_ID ];
334331 id_val = nla_get_u8 (id );
335332
336333 msk = mptcp_userspace_pm_get_sock (info );
@@ -373,26 +370,25 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct genl_info *info)
373370
374371int mptcp_pm_nl_subflow_create_doit (struct sk_buff * skb , struct genl_info * info )
375372{
376- struct nlattr * raddr = info -> attrs [MPTCP_PM_ATTR_ADDR_REMOTE ];
377- struct nlattr * laddr = info -> attrs [MPTCP_PM_ATTR_ADDR ];
378373 struct mptcp_pm_addr_entry entry = { 0 };
379374 struct mptcp_addr_info addr_r ;
375+ struct nlattr * raddr , * laddr ;
380376 struct mptcp_pm_local local ;
381377 struct mptcp_sock * msk ;
382378 int err = - EINVAL ;
383379 struct sock * sk ;
384380
385- if (! laddr || ! raddr ) {
386- GENL_SET_ERR_MSG ( info , "missing required address(es)" );
381+ if (GENL_REQ_ATTR_CHECK ( info , MPTCP_PM_ATTR_ADDR ) ||
382+ GENL_REQ_ATTR_CHECK ( info , MPTCP_PM_ATTR_ADDR_REMOTE ))
387383 return err ;
388- }
389384
390385 msk = mptcp_userspace_pm_get_sock (info );
391386 if (!msk )
392387 return err ;
393388
394389 sk = (struct sock * )msk ;
395390
391+ laddr = info -> attrs [MPTCP_PM_ATTR_ADDR ];
396392 err = mptcp_pm_parse_entry (laddr , info , true, & entry );
397393 if (err < 0 ) {
398394 NL_SET_ERR_MSG_ATTR (info -> extack , laddr , "error parsing local addr" );
@@ -406,6 +402,7 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *skb, struct genl_info *info)
406402 }
407403 entry .flags |= MPTCP_PM_ADDR_FLAG_SUBFLOW ;
408404
405+ raddr = info -> attrs [MPTCP_PM_ATTR_ADDR_REMOTE ];
409406 err = mptcp_pm_parse_addr (raddr , info , & addr_r );
410407 if (err < 0 ) {
411408 NL_SET_ERR_MSG_ATTR (info -> extack , raddr , "error parsing remote addr" );
@@ -498,31 +495,31 @@ static struct sock *mptcp_nl_find_ssk(struct mptcp_sock *msk,
498495
499496int mptcp_pm_nl_subflow_destroy_doit (struct sk_buff * skb , struct genl_info * info )
500497{
501- struct nlattr * raddr = info -> attrs [MPTCP_PM_ATTR_ADDR_REMOTE ];
502- struct nlattr * laddr = info -> attrs [MPTCP_PM_ATTR_ADDR ];
503498 struct mptcp_pm_addr_entry addr_l ;
504499 struct mptcp_addr_info addr_r ;
500+ struct nlattr * raddr , * laddr ;
505501 struct mptcp_sock * msk ;
506502 struct sock * sk , * ssk ;
507503 int err = - EINVAL ;
508504
509- if (! laddr || ! raddr ) {
510- GENL_SET_ERR_MSG ( info , "missing required address(es)" );
505+ if (GENL_REQ_ATTR_CHECK ( info , MPTCP_PM_ATTR_ADDR ) ||
506+ GENL_REQ_ATTR_CHECK ( info , MPTCP_PM_ATTR_ADDR_REMOTE ))
511507 return err ;
512- }
513508
514509 msk = mptcp_userspace_pm_get_sock (info );
515510 if (!msk )
516511 return err ;
517512
518513 sk = (struct sock * )msk ;
519514
515+ laddr = info -> attrs [MPTCP_PM_ATTR_ADDR ];
520516 err = mptcp_pm_parse_entry (laddr , info , true, & addr_l );
521517 if (err < 0 ) {
522518 NL_SET_ERR_MSG_ATTR (info -> extack , laddr , "error parsing local addr" );
523519 goto destroy_err ;
524520 }
525521
522+ raddr = info -> attrs [MPTCP_PM_ATTR_ADDR_REMOTE ];
526523 err = mptcp_pm_parse_addr (raddr , info , & addr_r );
527524 if (err < 0 ) {
528525 NL_SET_ERR_MSG_ATTR (info -> extack , raddr , "error parsing remote addr" );
0 commit comments