4444#include "strv.h"
4545#include "tclass.h"
4646
47+ DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR (
48+ network_hash_ops ,
49+ char , string_hash_func , string_compare_func ,
50+ Network , network_unref );
51+
4752DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR (
4853 stacked_netdevs_hash_ops ,
4954 char , string_hash_func , string_compare_func ,
@@ -599,7 +604,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
599604 if (r < 0 )
600605 return r ; /* network_verify() logs internally. */
601606
602- r = ordered_hashmap_ensure_put (networks , & string_hash_ops , network -> name , network );
607+ r = ordered_hashmap_ensure_put (networks , & network_hash_ops , network -> name , network );
603608 if (r < 0 )
604609 return log_warning_errno (r , "%s: Failed to store configuration into hashmap: %m" , filename );
605610
@@ -650,15 +655,15 @@ static bool network_netdev_equal(Network *a, Network *b) {
650655}
651656
652657int network_reload (Manager * manager ) {
653- OrderedHashmap * new_networks = NULL ;
658+ _cleanup_ordered_hashmap_free_ OrderedHashmap * new_networks = NULL ;
654659 Network * n , * old ;
655660 int r ;
656661
657662 assert (manager );
658663
659664 r = network_load (manager , & new_networks );
660665 if (r < 0 )
661- goto failure ;
666+ return r ;
662667
663668 ORDERED_HASHMAP_FOREACH (n , new_networks ) {
664669 r = network_get_by_name (manager , n -> name , & old );
@@ -680,14 +685,13 @@ int network_reload(Manager *manager) {
680685 /* Nothing updated, use the existing Network object, and drop the new one. */
681686 r = ordered_hashmap_replace (new_networks , old -> name , old );
682687 if (r < 0 )
683- goto failure ;
688+ return r ;
684689
685690 network_ref (old );
686691 network_unref (n );
687692 }
688693
689- ordered_hashmap_free_with_destructor (manager -> networks , network_unref );
690- manager -> networks = new_networks ;
694+ ordered_hashmap_free_and_replace (manager -> networks , new_networks );
691695
692696 r = manager_build_dhcp_pd_subnet_ids (manager );
693697 if (r < 0 )
@@ -698,11 +702,6 @@ int network_reload(Manager *manager) {
698702 return r ;
699703
700704 return 0 ;
701-
702- failure :
703- ordered_hashmap_free_with_destructor (new_networks , network_unref );
704-
705- return r ;
706705}
707706
708707int manager_build_dhcp_pd_subnet_ids (Manager * manager ) {
0 commit comments