@@ -611,20 +611,27 @@ int config_parse_neighbor_address(
611611 void * data ,
612612 void * userdata ) {
613613
614- Network * network = userdata ;
615614 _cleanup_ (neighbor_free_or_set_invalidp ) Neighbor * n = NULL ;
615+ Network * network = userdata ;
616616 int r ;
617617
618618 assert (filename );
619619 assert (section );
620620 assert (lvalue );
621621 assert (rvalue );
622- assert (data );
622+ assert (userdata );
623623
624624 r = neighbor_new_static (network , filename , section_line , & n );
625625 if (r < 0 )
626626 return log_oom ();
627627
628+ if (isempty (rvalue )) {
629+ n -> family = AF_UNSPEC ;
630+ n -> in_addr = IN_ADDR_NULL ;
631+ TAKE_PTR (n );
632+ return 0 ;
633+ }
634+
628635 r = in_addr_from_string_auto (rvalue , & n -> family , & n -> in_addr );
629636 if (r < 0 ) {
630637 log_syntax (unit , LOG_WARNING , filename , line , r ,
@@ -633,7 +640,6 @@ int config_parse_neighbor_address(
633640 }
634641
635642 TAKE_PTR (n );
636-
637643 return 0 ;
638644}
639645
@@ -649,20 +655,26 @@ int config_parse_neighbor_lladdr(
649655 void * data ,
650656 void * userdata ) {
651657
652- Network * network = userdata ;
653658 _cleanup_ (neighbor_free_or_set_invalidp ) Neighbor * n = NULL ;
659+ Network * network = userdata ;
654660 int r ;
655661
656662 assert (filename );
657663 assert (section );
658664 assert (lvalue );
659665 assert (rvalue );
660- assert (data );
666+ assert (userdata );
661667
662668 r = neighbor_new_static (network , filename , section_line , & n );
663669 if (r < 0 )
664670 return log_oom ();
665671
672+ if (isempty (rvalue )) {
673+ n -> ll_addr = HW_ADDR_NULL ;
674+ TAKE_PTR (n );
675+ return 0 ;
676+ }
677+
666678 r = parse_hw_addr (rvalue , & n -> ll_addr );
667679 if (r < 0 ) {
668680 log_syntax (unit , LOG_WARNING , filename , line , r ,
0 commit comments