Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 752378
Collapse All | Expand All

(-)systemd-246.old/src/network/networkd-address.c (-1 / +1 lines)
Lines 487-493 Link Here
487
        r = sd_netlink_message_get_errno(m);
487
        r = sd_netlink_message_get_errno(m);
488
        if (r < 0 && r != -EADDRNOTAVAIL)
488
        if (r < 0 && r != -EADDRNOTAVAIL)
489
                log_link_message_warning_errno(link, m, r, "Could not drop address");
489
                log_link_message_warning_errno(link, m, r, "Could not drop address");
490
        else
490
        else if (r >= 0)
491
                (void) manager_rtnl_process_address(rtnl, m, link->manager);
491
                (void) manager_rtnl_process_address(rtnl, m, link->manager);
492
492
493
        return 1;
493
        return 1;
(-)systemd-246.old/src/network/networkd-link.c (-3 / +40 lines)
Lines 1365-1371 Link Here
1365
        assert(link->network);
1365
        assert(link->network);
1366
        assert(link->state != _LINK_STATE_INVALID);
1366
        assert(link->state != _LINK_STATE_INVALID);
1367
1367
1368
        if (link->address_remove_messages != 0) {
1369
                log_link_debug(link, "Removing old addresses, new addresses will be configured later.");
1370
                link->request_static_addresses = true;
1371
                return 0;
1372
        }
1373
1368
        /* Reset all *_configured flags we are configuring. */
1374
        /* Reset all *_configured flags we are configuring. */
1375
        link->request_static_addresses = false;
1369
        link->addresses_configured = false;
1376
        link->addresses_configured = false;
1370
        link->addresses_ready = false;
1377
        link->addresses_ready = false;
1371
        link->neighbors_configured = false;
1378
        link->neighbors_configured = false;
Lines 2884-2889 Link Here
2884
        return 0;
2891
        return 0;
2885
}
2892
}
2886
2893
2894
static int remove_static_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
2895
        int r;
2896
2897
        assert(m);
2898
        assert(link);
2899
        assert(link->ifname);
2900
        assert(link->address_remove_messages > 0);
2901
2902
        link->address_remove_messages--;
2903
2904
        if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))
2905
                return 1;
2906
2907
        r = sd_netlink_message_get_errno(m);
2908
        if (r < 0 && r != -EADDRNOTAVAIL)
2909
                log_link_message_warning_errno(link, m, r, "Could not drop address");
2910
        else if (r >= 0)
2911
                (void) manager_rtnl_process_address(rtnl, m, link->manager);
2912
2913
        if (link->address_remove_messages == 0 && link->request_static_addresses) {
2914
                link_set_state(link, LINK_STATE_CONFIGURING);
2915
                r = link_request_set_addresses(link);
2916
                if (r < 0)
2917
                        link_enter_failed(link);
2918
        }
2919
2920
        return 1;
2921
}
2922
2887
static int link_drop_config(Link *link) {
2923
static int link_drop_config(Link *link) {
2888
        Address *address, *pool_address;
2924
        Address *address, *pool_address;
2889
        Neighbor *neighbor;
2925
        Neighbor *neighbor;
Lines 2896-2913 Link Here
2896
                if (address->family == AF_INET6 && in_addr_is_link_local(AF_INET6, &address->in_addr) == 1 && link_ipv6ll_enabled(link))
2932
                if (address->family == AF_INET6 && in_addr_is_link_local(AF_INET6, &address->in_addr) == 1 && link_ipv6ll_enabled(link))
2897
                        continue;
2933
                        continue;
2898
2934
2899
                r = address_remove(address, link, NULL);
2935
                r = address_remove(address, link, remove_static_address_handler);
2900
                if (r < 0)
2936
                if (r < 0)
2901
                        return r;
2937
                        return r;
2902
2938
2939
                link->address_remove_messages++;
2940
2903
                /* If this address came from an address pool, clean up the pool */
2941
                /* If this address came from an address pool, clean up the pool */
2904
                LIST_FOREACH(addresses, pool_address, link->pool_addresses) {
2942
                LIST_FOREACH(addresses, pool_address, link->pool_addresses)
2905
                        if (address_equal(address, pool_address)) {
2943
                        if (address_equal(address, pool_address)) {
2906
                                LIST_REMOVE(addresses, link->pool_addresses, pool_address);
2944
                                LIST_REMOVE(addresses, link->pool_addresses, pool_address);
2907
                                address_free(pool_address);
2945
                                address_free(pool_address);
2908
                                break;
2946
                                break;
2909
                        }
2947
                        }
2910
                }
2911
        }
2948
        }
2912
2949
2913
        SET_FOREACH(neighbor, link->neighbors, i) {
2950
        SET_FOREACH(neighbor, link->neighbors, i) {
(-)systemd-246.old/src/network/networkd-link.h (+2 lines)
Lines 75-80 Link Here
75
        LinkAddressState address_state;
75
        LinkAddressState address_state;
76
76
77
        unsigned address_messages;
77
        unsigned address_messages;
78
        unsigned address_remove_messages;
78
        unsigned address_label_messages;
79
        unsigned address_label_messages;
79
        unsigned neighbor_messages;
80
        unsigned neighbor_messages;
80
        unsigned route_messages;
81
        unsigned route_messages;
Lines 111-116 Link Here
111
        sd_ipv4ll *ipv4ll;
112
        sd_ipv4ll *ipv4ll;
112
        bool ipv4ll_address_configured:1;
113
        bool ipv4ll_address_configured:1;
113
114
115
        bool request_static_addresses:1;
114
        bool addresses_configured:1;
116
        bool addresses_configured:1;
115
        bool addresses_ready:1;
117
        bool addresses_ready:1;
116
        bool neighbors_configured:1;
118
        bool neighbors_configured:1;

Return to bug 752378