@@ -417,29 +417,7 @@ static void ipip_netlink_parms(struct nlattr *data[],
417417 if (!data )
418418 return ;
419419
420- if (data [IFLA_IPTUN_LINK ])
421- parms -> link = nla_get_u32 (data [IFLA_IPTUN_LINK ]);
422-
423- if (data [IFLA_IPTUN_LOCAL ])
424- parms -> iph .saddr = nla_get_in_addr (data [IFLA_IPTUN_LOCAL ]);
425-
426- if (data [IFLA_IPTUN_REMOTE ])
427- parms -> iph .daddr = nla_get_in_addr (data [IFLA_IPTUN_REMOTE ]);
428-
429- if (data [IFLA_IPTUN_TTL ]) {
430- parms -> iph .ttl = nla_get_u8 (data [IFLA_IPTUN_TTL ]);
431- if (parms -> iph .ttl )
432- parms -> iph .frag_off = htons (IP_DF );
433- }
434-
435- if (data [IFLA_IPTUN_TOS ])
436- parms -> iph .tos = nla_get_u8 (data [IFLA_IPTUN_TOS ]);
437-
438- if (data [IFLA_IPTUN_PROTO ])
439- parms -> iph .protocol = nla_get_u8 (data [IFLA_IPTUN_PROTO ]);
440-
441- if (!data [IFLA_IPTUN_PMTUDISC ] || nla_get_u8 (data [IFLA_IPTUN_PMTUDISC ]))
442- parms -> iph .frag_off = htons (IP_DF );
420+ ip_tunnel_netlink_parms (data , parms );
443421
444422 if (data [IFLA_IPTUN_COLLECT_METADATA ])
445423 * collect_md = true;
@@ -448,40 +426,6 @@ static void ipip_netlink_parms(struct nlattr *data[],
448426 * fwmark = nla_get_u32 (data [IFLA_IPTUN_FWMARK ]);
449427}
450428
451- /* This function returns true when ENCAP attributes are present in the nl msg */
452- static bool ipip_netlink_encap_parms (struct nlattr * data [],
453- struct ip_tunnel_encap * ipencap )
454- {
455- bool ret = false;
456-
457- memset (ipencap , 0 , sizeof (* ipencap ));
458-
459- if (!data )
460- return ret ;
461-
462- if (data [IFLA_IPTUN_ENCAP_TYPE ]) {
463- ret = true;
464- ipencap -> type = nla_get_u16 (data [IFLA_IPTUN_ENCAP_TYPE ]);
465- }
466-
467- if (data [IFLA_IPTUN_ENCAP_FLAGS ]) {
468- ret = true;
469- ipencap -> flags = nla_get_u16 (data [IFLA_IPTUN_ENCAP_FLAGS ]);
470- }
471-
472- if (data [IFLA_IPTUN_ENCAP_SPORT ]) {
473- ret = true;
474- ipencap -> sport = nla_get_be16 (data [IFLA_IPTUN_ENCAP_SPORT ]);
475- }
476-
477- if (data [IFLA_IPTUN_ENCAP_DPORT ]) {
478- ret = true;
479- ipencap -> dport = nla_get_be16 (data [IFLA_IPTUN_ENCAP_DPORT ]);
480- }
481-
482- return ret ;
483- }
484-
485429static int ipip_newlink (struct net * src_net , struct net_device * dev ,
486430 struct nlattr * tb [], struct nlattr * data [],
487431 struct netlink_ext_ack * extack )
@@ -491,7 +435,7 @@ static int ipip_newlink(struct net *src_net, struct net_device *dev,
491435 struct ip_tunnel_encap ipencap ;
492436 __u32 fwmark = 0 ;
493437
494- if (ipip_netlink_encap_parms (data , & ipencap )) {
438+ if (ip_tunnel_netlink_encap_parms (data , & ipencap )) {
495439 int err = ip_tunnel_encap_setup (t , & ipencap );
496440
497441 if (err < 0 )
@@ -512,7 +456,7 @@ static int ipip_changelink(struct net_device *dev, struct nlattr *tb[],
512456 bool collect_md ;
513457 __u32 fwmark = t -> fwmark ;
514458
515- if (ipip_netlink_encap_parms (data , & ipencap )) {
459+ if (ip_tunnel_netlink_encap_parms (data , & ipencap )) {
516460 int err = ip_tunnel_encap_setup (t , & ipencap );
517461
518462 if (err < 0 )
0 commit comments