base-files: update for stx 5.0
[pti/rtp.git] / meta-starlingx / meta-stx-integ / recipes-support / drbd / drbd-utils / 0004-drbdadm-ipaddr-change.patch
1 Index: git/user/drbdadm_adjust.c
2 ===================================================================
3 --- git.orig/user/drbdadm_adjust.c
4 +++ git/user/drbdadm_adjust.c
5 @@ -157,6 +157,7 @@ static int opts_equal(struct context_def
6  static int addr_equal(struct d_resource* conf, struct d_resource* running)
7  {
8         int equal;
9 +    char *peer_addr, *peer_af, *peer_port;
10  
11         if (conf->peer == NULL && running->peer == NULL) return 1;
12         if (running->peer == NULL) return 0;
13 @@ -165,16 +166,29 @@ static int addr_equal(struct d_resource*
14                 !strcmp(conf->me->port,           running->me->port) &&
15                 !strcmp(conf->me->address_family, running->me->address_family);
16  
17 -       if(conf->me->proxy)
18 -               equal = equal &&
19 -                       !strcmp(conf->me->proxy->inside_addr, running->peer->address) &&
20 -                       !strcmp(conf->me->proxy->inside_port, running->peer->port) &&
21 -                       !strcmp(conf->me->proxy->inside_af,   running->peer->address_family);
22 -       else
23 -               equal = equal && conf->peer &&
24 -                       !strcmp(conf->peer->address,        running->peer->address) &&
25 -                       !strcmp(conf->peer->port,           running->peer->port) &&
26 -                       !strcmp(conf->peer->address_family, running->peer->address_family);
27 +       if(conf->me->proxy) {
28 +               peer_addr = conf->me->proxy->inside_addr;
29 +               peer_port = conf->me->proxy->inside_port;
30 +               peer_af = conf->me->proxy->inside_af;
31 +       } else {
32 +               peer_addr = conf->peer->address;
33 +               peer_port = conf->peer->port;
34 +               peer_af = conf->peer->address_family;
35 +       }
36 +
37 +       equal = equal && conf->peer &&
38 +               !strcmp(peer_addr, running->peer->address) &&
39 +               !strcmp(peer_port, running->peer->port) &&
40 +               !strcmp(peer_af, running->peer->address_family);
41 +
42 +       if (verbose > 2)
43 +               fprintf(stderr, "Network addresses differ:\n"
44 +                       "\trunning: %s:%s:%s -- %s:%s:%s\n"
45 +                       "\t config: %s:%s:%s -- %s:%s:%s\n",
46 +                       running->me->address_family, running->me->address, running->me->port,
47 +                       running->peer->address_family, running->peer->address, running->peer->port,
48 +                       conf->me->address_family, conf->me->address, conf->me->port,
49 +                       peer_af, peer_addr, peer_port);
50  
51         return equal;
52  }
53 @@ -690,8 +704,7 @@ int adm_adjust(struct cfg_ctx *ctx)
54         if (ctx->res->me->proxy && can_do_proxy)
55                 do_connect |= proxy_reconf(ctx, running);
56  
57 -       if (do_connect && running)
58 -               do_disconnect = running->net_options != NULL;
59 +    do_disconnect = do_connect && running && (running->peer || running->net_options);
60  
61         if (do_res_options)
62                 schedule_deferred_cmd(adm_set_default_res_options, ctx, "resource-options", CFG_RESOURCE);
63 @@ -716,8 +729,12 @@ int adm_adjust(struct cfg_ctx *ctx)
64         }
65  
66         if (do_connect) {
67 -               if (do_disconnect && ctx->res->peer)
68 -                       schedule_deferred_cmd(adm_disconnect, ctx, "disconnect", CFG_NET_PREREQ);
69 +        /* "disconnect" specifying the end-point addresses currently in-use,
70 +         * before "connect"ing with the addresses currently in-config-file. */
71 +        if (do_disconnect) {
72 +                struct cfg_ctx tmp_ctx = { .res = running, .vol = vol, };
73 +                schedule_deferred_cmd(adm_disconnect, &tmp_ctx, "disconnect", CFG_NET_PREREQ);
74 +        }
75                 schedule_deferred_cmd(adm_connect, ctx, "connect", CFG_NET);
76                 do_net_options = 0;
77         }
78 Index: git/user/legacy/drbdadm_adjust.c
79 ===================================================================
80 --- git.orig/user/legacy/drbdadm_adjust.c
81 +++ git/user/legacy/drbdadm_adjust.c
82 @@ -133,6 +133,7 @@ static int opts_equal(struct d_option* c
83  static int addr_equal(struct d_resource* conf, struct d_resource* running)
84  {
85         int equal;
86 +    char *peer_addr, *peer_af, *peer_port;
87  
88         if (conf->peer == NULL && running->peer == NULL) return 1;
89         if (running->peer == NULL) return 0;
90 @@ -141,18 +142,31 @@ static int addr_equal(struct d_resource*
91                 !strcmp(conf->me->port,           running->me->port) &&
92                 !strcmp(conf->me->address_family, running->me->address_family);
93  
94 -       if(conf->me->proxy)
95 -               equal = equal &&
96 -                       !strcmp(conf->me->proxy->inside_addr, running->peer->address) &&
97 -                       !strcmp(conf->me->proxy->inside_port, running->peer->port) &&
98 -                       !strcmp(conf->me->proxy->inside_af,   running->peer->address_family);
99 -       else
100 -               equal = equal && conf->peer &&
101 -                       !strcmp(conf->peer->address,        running->peer->address) &&
102 -                       !strcmp(conf->peer->port,           running->peer->port) &&
103 -                       !strcmp(conf->peer->address_family, running->peer->address_family);
104 +    if(conf->me->proxy) {
105 +            peer_addr = conf->me->proxy->inside_addr;
106 +            peer_port = conf->me->proxy->inside_port;
107 +            peer_af = conf->me->proxy->inside_af;
108 +    } else {
109 +            peer_addr = conf->peer->address;
110 +            peer_port = conf->peer->port;
111 +            peer_af = conf->peer->address_family;
112 +    }
113 +
114 +    equal = equal && conf->peer &&
115 +            !strcmp(peer_addr, running->peer->address) &&
116 +            !strcmp(peer_port, running->peer->port) &&
117 +            !strcmp(peer_af, running->peer->address_family);
118 +
119 +    if (verbose > 2)
120 +            fprintf(stderr, "Network addresses differ:\n"
121 +                    "\trunning: %s:%s:%s -- %s:%s:%s\n"
122 +                    "\t config: %s:%s:%s -- %s:%s:%s\n",
123 +                    running->me->address_family, running->me->address, running->me->port,
124 +                    running->peer->address_family, running->peer->address, running->peer->port,
125 +                    conf->me->address_family, conf->me->address, conf->me->port,
126 +                    peer_af, peer_addr, peer_port);
127  
128 -       return equal;
129 +    return equal;
130  }
131  
132  static int proto_equal(struct d_resource* conf, struct d_resource* running)