@@ -159,6 +159,11 @@ bool link_is_ready_to_configure(Link *link, bool allow_unmanaged) {
159159 return false;
160160 */
161161
162+ /* TODO: enable this check when link_request_to_activate() is used.
163+ if (!link->activated)
164+ return false;
165+ */
166+
162167 return true;
163168}
164169
@@ -754,97 +759,7 @@ int link_ipv6ll_gained(Link *link, const struct in6_addr *address) {
754759 return 0 ;
755760}
756761
757- static int link_up_handler (sd_netlink * rtnl , sd_netlink_message * m , Link * link ) {
758- int r ;
759-
760- assert (link );
761-
762- if (IN_SET (link -> state , LINK_STATE_FAILED , LINK_STATE_LINGER ))
763- return 1 ;
764-
765- r = sd_netlink_message_get_errno (m );
766- if (r < 0 )
767- /* we warn but don't fail the link, as it may be brought up later */
768- log_link_message_warning_errno (link , m , r , "Could not bring up interface" );
769-
770- return 1 ;
771- }
772-
773- int link_up (Link * link ) {
774- _cleanup_ (sd_netlink_message_unrefp ) sd_netlink_message * req = NULL ;
775- int r ;
776-
777- assert (link );
778- assert (link -> network );
779- assert (link -> manager );
780- assert (link -> manager -> rtnl );
781-
782- log_link_debug (link , "Bringing link up" );
783-
784- r = sd_rtnl_message_new_link (link -> manager -> rtnl , & req , RTM_SETLINK , link -> ifindex );
785- if (r < 0 )
786- return log_link_error_errno (link , r , "Could not allocate RTM_SETLINK message: %m" );
787-
788- r = sd_rtnl_message_link_set_flags (req , IFF_UP , IFF_UP );
789- if (r < 0 )
790- return log_link_error_errno (link , r , "Could not set link flags: %m" );
791-
792- r = netlink_call_async (link -> manager -> rtnl , NULL , req , link_up_handler ,
793- link_netlink_destroy_callback , link );
794- if (r < 0 )
795- return log_link_error_errno (link , r , "Could not send rtnetlink message: %m" );
796-
797- link_ref (link );
798-
799- return 0 ;
800- }
801-
802- static int link_down_handler (sd_netlink * rtnl , sd_netlink_message * m , Link * link ) {
803- int r ;
804-
805- assert (link );
806-
807- if (IN_SET (link -> state , LINK_STATE_FAILED , LINK_STATE_LINGER ))
808- return 1 ;
809-
810- r = sd_netlink_message_get_errno (m );
811- if (r < 0 )
812- log_link_message_warning_errno (link , m , r , "Could not bring down interface" );
813-
814- return 1 ;
815- }
816-
817- int link_down (Link * link , link_netlink_message_handler_t callback ) {
818- _cleanup_ (sd_netlink_message_unrefp ) sd_netlink_message * req = NULL ;
819- int r ;
820-
821- assert (link );
822- assert (link -> manager );
823- assert (link -> manager -> rtnl );
824-
825- log_link_debug (link , "Bringing link down" );
826-
827- r = sd_rtnl_message_new_link (link -> manager -> rtnl , & req ,
828- RTM_SETLINK , link -> ifindex );
829- if (r < 0 )
830- return log_link_error_errno (link , r , "Could not allocate RTM_SETLINK message: %m" );
831-
832- r = sd_rtnl_message_link_set_flags (req , 0 , IFF_UP );
833- if (r < 0 )
834- return log_link_error_errno (link , r , "Could not set link flags: %m" );
835-
836- r = netlink_call_async (link -> manager -> rtnl , NULL , req ,
837- callback ?: link_down_handler ,
838- link_netlink_destroy_callback , link );
839- if (r < 0 )
840- return log_link_error_errno (link , r , "Could not send rtnetlink message: %m" );
841-
842- link_ref (link );
843-
844- return 0 ;
845- }
846-
847- static int link_handle_bound_to_list (Link * link ) {
762+ int link_handle_bound_to_list (Link * link ) {
848763 bool required_up = false;
849764 bool link_is_up = false;
850765 Link * l ;
@@ -864,7 +779,7 @@ static int link_handle_bound_to_list(Link *link) {
864779 }
865780
866781 if (!required_up && link_is_up )
867- return link_down (link , NULL );
782+ return link_down (link );
868783 if (required_up && !link_is_up )
869784 return link_up (link );
870785
@@ -1141,7 +1056,7 @@ int link_activate(Link *link) {
11411056 break ;
11421057 _fallthrough_ ;
11431058 case ACTIVATION_POLICY_ALWAYS_DOWN :
1144- r = link_down (link , NULL );
1059+ r = link_down (link );
11451060 if (r < 0 )
11461061 return r ;
11471062 break ;
@@ -1945,7 +1860,7 @@ static int link_admin_state_up(Link *link) {
19451860
19461861 if (link -> network -> activation_policy == ACTIVATION_POLICY_ALWAYS_DOWN ) {
19471862 log_link_info (link , "ActivationPolicy is \"always-off\", forcing link down" );
1948- return link_down (link , NULL );
1863+ return link_down (link );
19491864 }
19501865
19511866 /* We set the ipv6 mtu after the device mtu, but the kernel resets
0 commit comments