@@ -32,6 +32,7 @@ int address_new(Address **ret) {
3232 .scope = RT_SCOPE_UNIVERSE ,
3333 .cinfo .ifa_prefered = CACHE_INFO_INFINITY_LIFE_TIME ,
3434 .cinfo .ifa_valid = CACHE_INFO_INFINITY_LIFE_TIME ,
35+ .ipv6_duplicate_address_detection = true,
3536 };
3637
3738 * ret = TAKE_PTR (address );
@@ -593,7 +594,7 @@ int address_configure(
593594 if (address -> home_address )
594595 address -> flags |= IFA_F_HOMEADDRESS ;
595596
596- if (address -> duplicate_address_detection )
597+ if (! address -> ipv6_duplicate_address_detection )
597598 address -> flags |= IFA_F_NODAD ;
598599
599600 if (address -> manage_temporary_address )
@@ -994,14 +995,18 @@ int config_parse_address_flags(const char *unit,
994995 r = parse_boolean (rvalue );
995996 if (r < 0 ) {
996997 log_syntax (unit , LOG_ERR , filename , line , r ,
997- "Failed to parse address flag , ignoring: %s" , rvalue );
998+ "Failed to parse %s= , ignoring: %s" , lvalue , rvalue );
998999 return 0 ;
9991000 }
10001001
10011002 if (streq (lvalue , "HomeAddress" ))
10021003 n -> home_address = r ;
10031004 else if (streq (lvalue , "DuplicateAddressDetection" ))
1004- n -> duplicate_address_detection = r ;
1005+ n -> ipv6_duplicate_address_detection = !!r ;
1006+ else if (streq (lvalue , "IPv6DuplicateAddressDetection" ))
1007+ n -> ipv6_duplicate_address_detection = r ;
1008+ else if (streq (lvalue , "IPv4DuplicateAddressDetection" ))
1009+ n -> ipv4_duplicate_address_detection = r ;
10051010 else if (streq (lvalue , "ManageTemporaryAddress" ))
10061011 n -> manage_temporary_address = r ;
10071012 else if (streq (lvalue , "PrefixRoute" ))
@@ -1058,43 +1063,6 @@ int config_parse_address_scope(const char *unit,
10581063 return 0 ;
10591064}
10601065
1061- int config_parse_address_ipv4_dad (const char * unit ,
1062- const char * filename ,
1063- unsigned line ,
1064- const char * section ,
1065- unsigned section_line ,
1066- const char * lvalue ,
1067- int ltype ,
1068- const char * rvalue ,
1069- void * data ,
1070- void * userdata ) {
1071- Network * network = userdata ;
1072- _cleanup_ (address_free_or_set_invalidp ) Address * n = NULL ;
1073- int r ;
1074-
1075- assert (filename );
1076- assert (section );
1077- assert (lvalue );
1078- assert (rvalue );
1079- assert (data );
1080-
1081- r = address_new_static (network , filename , section_line , & n );
1082- if (r < 0 )
1083- return r ;
1084-
1085- r = parse_boolean (rvalue );
1086- if (r < 0 ) {
1087- log_syntax (unit , LOG_ERR , filename , line , r ,
1088- "Failed to parse IPv4 duplicate address detection, ignoring: %s" , rvalue );
1089- return 0 ;
1090- }
1091-
1092- n -> ipv4_duplicate_address_detection = r ;
1093-
1094- n = NULL ;
1095- return 0 ;
1096- }
1097-
10981066bool address_is_ready (const Address * a ) {
10991067 assert (a );
11001068
0 commit comments