@@ -6471,45 +6471,52 @@ ni_suse_ifcfg_parse_firewall(ni_suse_ifcfg_array_t *ifcfgs, ni_suse_ifcfg_t *ifc
64716471 return TRUE;
64726472}
64736473
6474- /*
6475- * Read ifsysctl file
6476- */
64776474static const ni_var_t *
6478- __ifsysctl_get_var (ni_var_array_t * vars , const char * path , const char * ifname , const char * attr )
6475+ ni_suse_ifsysctl_get_var (ni_var_array_t * vars , const char * path , ni_netdev_t * dev ,
6476+ const char * attr )
64796477{
6480- const char * def_names [] = { "all" , "default" , ifname , NULL };
6481- const char * lo_names [] = { ifname , NULL };
6482- const char * * names = ni_string_eq (ifname , "lo" ) ? lo_names : def_names ;
6483- const char * * name ;
6484- const ni_var_t * ret = NULL ;
6478+ const char * all [] = { dev -> name , "default" , "all" , NULL };
6479+ const char * ifc_only [] = { dev -> name , NULL };
6480+ const char * * names = all ;
6481+ const char * * name = NULL ;
64856482 const ni_var_t * var ;
64866483
6484+ if (ni_string_eq (attr , "accept_redirects" ) ||
6485+ ni_string_eq (attr , "use_tempaddr" )) {
6486+ if (dev -> link .type == NI_IFTYPE_LOOPBACK )
6487+ return NULL ;
6488+ }
6489+
6490+ if (ni_string_eq (attr , "accept_redirects" ))
6491+ names = ifc_only ;
6492+
64876493 for (name = names ; * name ; name ++ ) {
64886494 var = ni_ifsysctl_vars_get (vars , "%s/%s/%s" , path , * name , attr );
64896495 if (!var || ni_string_empty (var -> value ))
64906496 continue ;
6491- ret = var ;
6497+ return var ;
64926498 }
6493- return ret ;
6499+
6500+ return NULL ;
64946501}
64956502
64966503static const char *
6497- __ifsysctl_get_str (ni_var_array_t * vars , const char * path , const char * ifname , const char * attr )
6504+ ni_suse_ifsysctl_get_str (ni_var_array_t * vars , const char * path , ni_netdev_t * dev , const char * attr )
64986505{
64996506 const ni_var_t * var ;
65006507
6501- if ((var = __ifsysctl_get_var (vars , path , ifname , attr )))
6508+ if ((var = ni_suse_ifsysctl_get_var (vars , path , dev , attr )))
65026509 return var -> value ;
65036510 return NULL ;
65046511}
65056512
65066513static ni_bool_t
6507- __ifsysctl_get_int (ni_var_array_t * vars , const char * path , const char * ifname ,
6514+ ni_suse_ifsysctl_get_int (ni_var_array_t * vars , const char * path , ni_netdev_t * dev ,
65086515 const char * attr , int * value , int base )
65096516{
65106517 const ni_var_t * var ;
65116518
6512- if (!(var = __ifsysctl_get_var (vars , path , ifname , attr )))
6519+ if (!(var = ni_suse_ifsysctl_get_var (vars , path , dev , attr )))
65136520 return FALSE;
65146521
65156522 if (ni_parse_int (var -> value , value , base ) < 0 ) {
@@ -6524,13 +6531,13 @@ __ifsysctl_get_int(ni_var_array_t *vars, const char *path, const char *ifname,
65246531}
65256532
65266533static ni_bool_t
6527- __ifsysctl_get_ipv6 (ni_var_array_t * vars , const char * path , const char * ifname ,
6534+ ni_suse_ifsysctl_get_ipv6 (ni_var_array_t * vars , const char * path , ni_netdev_t * dev ,
65286535 const char * attr , struct in6_addr * ipv6 )
65296536{
65306537 ni_sockaddr_t addr ;
65316538 const char * str ;
65326539
6533- str = __ifsysctl_get_str (vars , path , ifname , attr );
6540+ str = ni_suse_ifsysctl_get_str (vars , path , dev , attr );
65346541 if (!str || ni_sockaddr_parse (& addr , str , AF_INET6 ) < 0 )
65356542 return FALSE;
65366543
@@ -6539,12 +6546,12 @@ __ifsysctl_get_ipv6(ni_var_array_t *vars, const char *path, const char *ifname,
65396546}
65406547
65416548static void
6542- __ifsysctl_get_tristate (ni_var_array_t * vars , const char * path , const char * ifname ,
6549+ ni_suse_ifsysctl_get_tristate (ni_var_array_t * vars , const char * path , ni_netdev_t * dev ,
65436550 const char * attr , ni_tristate_t * tristate )
65446551{
65456552 int value = NI_TRISTATE_DEFAULT ;
65466553
6547- __ifsysctl_get_int (vars , path , ifname , attr , & value , 10 );
6554+ ni_suse_ifsysctl_get_int (vars , path , dev , attr , & value , 10 );
65486555 if (ni_tristate_is_set (value ))
65496556 ni_tristate_set (tristate , value );
65506557}
@@ -6570,12 +6577,12 @@ ni_suse_ifcfg_parse_ifsysctl_ipv4(ni_suse_ifcfg_t *ifcfg, ni_var_array_t *ifsysc
65706577
65716578 /* Note: No conf.arp-verify in sysctl, can be set with CHECK_DUPLICATE_IP */
65726579
6573- __ifsysctl_get_tristate (ifsysctl , "net/ipv4/conf" , dev -> name ,
6580+ ni_suse_ifsysctl_get_tristate (ifsysctl , "net/ipv4/conf" , dev ,
65746581 "forwarding" , & ipv4 -> conf .forwarding );
65756582 /* Note: arp_notify is also set with SEND_GRATUITOUS_ARP */
6576- __ifsysctl_get_tristate (ifsysctl , "net/ipv4/conf" , dev -> name ,
6583+ ni_suse_ifsysctl_get_tristate (ifsysctl , "net/ipv4/conf" , dev ,
65776584 "arp_notify" , & ipv4 -> conf .arp_notify );
6578- __ifsysctl_get_tristate (ifsysctl , "net/ipv4/conf" , dev -> name ,
6585+ ni_suse_ifsysctl_get_tristate (ifsysctl , "net/ipv4/conf" , dev ,
65796586 "accept_redirects" , & ipv4 -> conf .accept_redirects );
65806587
65816588 return TRUE;
@@ -6595,10 +6602,10 @@ ni_suse_ifcfg_parse_ifsysctl_ipv6(ni_suse_ifcfg_t *ifcfg, ni_var_array_t *ifsysc
65956602 * First, get sysctl's affecting also "IPv6 L2" aka
65966603 * stable secret for the fe80 link-address assignment.
65976604 */
6598- __ifsysctl_get_int (ifsysctl , "net/ipv6/conf" , dev -> name ,
6605+ ni_suse_ifsysctl_get_int (ifsysctl , "net/ipv6/conf" , dev ,
65996606 "addr_gen_mode" , & ipv6 -> conf .addr_gen_mode , 10 );
66006607
6601- __ifsysctl_get_ipv6 (ifsysctl , "net/ipv6/conf" , dev -> name ,
6608+ ni_suse_ifsysctl_get_ipv6 (ifsysctl , "net/ipv6/conf" , dev ,
66026609 "stable_secret" , & ipv6 -> conf .stable_secret );
66036610
66046611 /*
@@ -6627,43 +6634,43 @@ ni_suse_ifcfg_parse_ifsysctl_ipv6(ni_suse_ifcfg_t *ifcfg, ni_var_array_t *ifsysc
66276634 /*
66286635 * When IPv6 is disabled via sysctl, we're done
66296636 */
6630- __ifsysctl_get_tristate (ifsysctl , "net/ipv6/conf" , dev -> name ,
6637+ ni_suse_ifsysctl_get_tristate (ifsysctl , "net/ipv6/conf" , dev ,
66316638 "disable_ipv6" , & disable_ipv6 );
66326639 if (ni_tristate_is_set (disable_ipv6 ))
66336640 ni_tristate_set (& ipv6 -> conf .enabled , !disable_ipv6 );
66346641 if (ni_tristate_is_disabled (ipv6 -> conf .enabled ))
66356642 return TRUE;
66366643
6637- __ifsysctl_get_tristate (ifsysctl , "net/ipv6/conf" , dev -> name ,
6644+ ni_suse_ifsysctl_get_tristate (ifsysctl , "net/ipv6/conf" , dev ,
66386645 "forwarding" , & ipv6 -> conf .forwarding );
66396646
6640- __ifsysctl_get_int (ifsysctl , "net/ipv6/conf" , dev -> name ,
6647+ ni_suse_ifsysctl_get_int (ifsysctl , "net/ipv6/conf" , dev ,
66416648 "accept_ra" , & ipv6 -> conf .accept_ra , 10 );
66426649 if (ipv6 -> conf .accept_ra > NI_IPV6_ACCEPT_RA_ROUTER )
66436650 ipv6 -> conf .accept_ra = NI_IPV6_ACCEPT_RA_ROUTER ;
66446651 else
66456652 if (ipv6 -> conf .accept_ra < NI_IPV6_ACCEPT_RA_DEFAULT )
66466653 ipv6 -> conf .accept_ra = NI_IPV6_ACCEPT_RA_DEFAULT ;
66476654
6648- __ifsysctl_get_int (ifsysctl , "net/ipv6/conf" , dev -> name ,
6655+ ni_suse_ifsysctl_get_int (ifsysctl , "net/ipv6/conf" , dev ,
66496656 "accept_dad" , & ipv6 -> conf .accept_dad , 10 );
66506657 if (ipv6 -> conf .accept_dad > NI_IPV6_ACCEPT_DAD_FAIL_PROTOCOL )
66516658 ipv6 -> conf .accept_dad = NI_IPV6_ACCEPT_DAD_FAIL_PROTOCOL ;
66526659 else
66536660 if (ipv6 -> conf .accept_dad < NI_IPV6_ACCEPT_DAD_DEFAULT )
66546661 ipv6 -> conf .accept_dad = NI_IPV6_ACCEPT_DAD_DEFAULT ;
66556662
6656- __ifsysctl_get_tristate (ifsysctl , "net/ipv6/conf" , dev -> name ,
6663+ ni_suse_ifsysctl_get_tristate (ifsysctl , "net/ipv6/conf" , dev ,
66576664 "autoconf" , & ipv6 -> conf .autoconf );
66586665
6659- __ifsysctl_get_int (ifsysctl , "net/ipv6/conf" , dev -> name ,
6666+ ni_suse_ifsysctl_get_int (ifsysctl , "net/ipv6/conf" , dev ,
66606667 "use_tempaddr" , & ipv6 -> conf .privacy , 10 );
66616668 if (ipv6 -> conf .privacy > NI_IPV6_PRIVACY_PREFER_TEMPORARY )
66626669 ipv6 -> conf .privacy = NI_IPV6_PRIVACY_PREFER_TEMPORARY ;
66636670 else if (ipv6 -> conf .privacy < NI_IPV6_PRIVACY_DEFAULT )
66646671 ipv6 -> conf .privacy = NI_IPV6_PRIVACY_DISABLED ;
66656672
6666- __ifsysctl_get_tristate (ifsysctl , "net/ipv6/conf" , dev -> name ,
6673+ ni_suse_ifsysctl_get_tristate (ifsysctl , "net/ipv6/conf" , dev ,
66676674 "accept_redirects" , & ipv6 -> conf .accept_redirects );
66686675
66696676 return TRUE;
0 commit comments