~ubuntu-branches/ubuntu/trusty/keepalived/trusty

« back to all changes in this revision

Viewing changes to keepalived/vrrp/vrrp_data.c

  • Committer: Bazaar Package Importer
  • Author(s): Didier Roche
  • Date: 2009-05-12 20:26:15 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20090512202615-k850bw35qpuvpq4p
Tags: 1.1.17-1ubuntu1
* Merge from debian unstable, remaining changes:
  - debian/rules: DEB_UPDATE_RCD_PARAMS := expicit init start/stop
    parameters (don't stop at 0 and 6)
  - debian/init.d: init script header adapted to stop rule
  - debian/keepalived.postinst: Remove shutdown and reboot links

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 *
6
6
 * Part:        Dynamic data structure definition.
7
7
 *
8
 
 * Version:     $Id: vrrp_data.c,v 1.1.15 2007/09/15 04:07:41 acassen Exp $
 
8
 * Version:     $Id: vrrp_data.c,v 1.1.17 2009/03/05 01:31:12 acassen Exp $
9
9
 *
10
10
 * Author:      Alexandre Cassen, <acassen@linux-vs.org>
11
11
 *
19
19
 *              as published by the Free Software Foundation; either version
20
20
 *              2 of the License, or (at your option) any later version.
21
21
 *
22
 
 * Copyright (C) 2001-2007 Alexandre Cassen, <acassen@freebox.fr>
 
22
 * Copyright (C) 2001-2009 Alexandre Cassen, <acassen@freebox.fr>
23
23
 */
24
24
 
25
25
#include "vrrp_data.h"
29
29
#include "vrrp.h"
30
30
#include "memory.h"
31
31
#include "utils.h"
 
32
#include "logger.h"
32
33
 
33
34
/* global vars */
34
35
vrrp_conf_data *vrrp_data = NULL;
75
76
        int i;
76
77
        char *str;
77
78
 
78
 
        syslog(LOG_INFO, " VRRP Sync Group = %s, %s", vgroup->gname,
 
79
        log_message(LOG_INFO, " VRRP Sync Group = %s, %s", vgroup->gname,
79
80
               (vgroup->state == VRRP_STATE_MAST) ? "MASTER" : "BACKUP");
80
81
        for (i = 0; i < VECTOR_SIZE(vgroup->iname); i++) {
81
82
                str = VECTOR_SLOT(vgroup->iname, i);
82
 
                syslog(LOG_INFO, "   monitor = %s", str);
 
83
                log_message(LOG_INFO, "   monitor = %s", str);
83
84
        }
84
85
        if (vgroup->script_backup)
85
 
                syslog(LOG_INFO, "   Backup state transition script = %s",
 
86
                log_message(LOG_INFO, "   Backup state transition script = %s",
86
87
                       vgroup->script_backup);
87
88
        if (vgroup->script_master)
88
 
                syslog(LOG_INFO, "   Master state transition script = %s",
 
89
                log_message(LOG_INFO, "   Master state transition script = %s",
89
90
                       vgroup->script_master);
90
91
        if (vgroup->script_fault)
91
 
                syslog(LOG_INFO, "   Fault state transition script = %s",
 
92
                log_message(LOG_INFO, "   Fault state transition script = %s",
92
93
                       vgroup->script_fault);
93
94
        if (vgroup->script)
94
 
                syslog(LOG_INFO, "   Generic state transition script = '%s'",
 
95
                log_message(LOG_INFO, "   Generic state transition script = '%s'",
95
96
                       vgroup->script);
96
97
        if (vgroup->smtp_alert)
97
 
                syslog(LOG_INFO, "   Using smtp notification");
 
98
                log_message(LOG_INFO, "   Using smtp notification");
98
99
}
99
100
 
100
101
static void
112
113
        vrrp_script *vscript = data;
113
114
        char *str;
114
115
 
115
 
        syslog(LOG_INFO, " VRRP Script = %s", vscript->sname);
116
 
        syslog(LOG_INFO, "   Command = %s", vscript->script);
117
 
        syslog(LOG_INFO, "   Interval = %d sec", vscript->interval / TIMER_HZ);
118
 
        syslog(LOG_INFO, "   Weight = %d", vscript->weight);
 
116
        log_message(LOG_INFO, " VRRP Script = %s", vscript->sname);
 
117
        log_message(LOG_INFO, "   Command = %s", vscript->script);
 
118
        log_message(LOG_INFO, "   Interval = %d sec", vscript->interval / TIMER_HZ);
 
119
        log_message(LOG_INFO, "   Weight = %d", vscript->weight);
119
120
 
120
121
        switch (vscript->result) {
121
122
        case VRRP_SCRIPT_STATUS_INIT:
124
125
                str = "BAD"; break;
125
126
        case VRRP_SCRIPT_STATUS_GOOD:
126
127
                str = "GOOD"; break;
 
128
        case VRRP_SCRIPT_STATUS_INIT_GOOD:
 
129
                str = "INIT/GOOD"; break;
127
130
        case VRRP_SCRIPT_STATUS_DISABLED:
128
131
        default:
129
132
                str = "DISABLED"; break;
130
133
        }
131
 
        syslog(LOG_INFO, "   Status = %s", str);
 
134
        log_message(LOG_INFO, "   Status = %s", str);
132
135
}
133
136
 
134
137
/* Socket pool functions */
146
149
dump_sock(void *sock_data_obj)
147
150
{
148
151
        sock *sock_obj = sock_data_obj;
149
 
        syslog(LOG_INFO, "VRRP sockpool: [ifindex(%d), proto(%d), fd(%d,%d)]",
 
152
        log_message(LOG_INFO, "VRRP sockpool: [ifindex(%d), proto(%d), fd(%d,%d)]",
150
153
               sock_obj->ifindex
151
154
               , sock_obj->proto
152
155
               , sock_obj->fd_in
189
192
{
190
193
        vrrp_rt *vrrp = data;
191
194
 
192
 
        syslog(LOG_INFO, " VRRP Instance = %s", vrrp->iname);
 
195
        log_message(LOG_INFO, " VRRP Instance = %s", vrrp->iname);
193
196
        if (vrrp->init_state == VRRP_STATE_BACK)
194
 
                syslog(LOG_INFO, "   Want State = BACKUP");
 
197
                log_message(LOG_INFO, "   Want State = BACKUP");
195
198
        else
196
 
                syslog(LOG_INFO, "   Want State = MASTER");
197
 
        syslog(LOG_INFO, "   Runing on device = %s", IF_NAME(vrrp->ifp));
 
199
                log_message(LOG_INFO, "   Want State = MASTER");
 
200
        log_message(LOG_INFO, "   Runing on device = %s", IF_NAME(vrrp->ifp));
198
201
        if (vrrp->dont_track_primary)
199
 
                syslog(LOG_INFO, "   VRRP interface tracking disabled");
 
202
                log_message(LOG_INFO, "   VRRP interface tracking disabled");
200
203
        if (vrrp->mcast_saddr)
201
 
                syslog(LOG_INFO, "   Using mcast src_ip = %s",
 
204
                log_message(LOG_INFO, "   Using mcast src_ip = %s",
202
205
                       inet_ntop2(vrrp->mcast_saddr));
203
206
        if (vrrp->lvs_syncd_if)
204
 
                syslog(LOG_INFO, "   Runing LVS sync daemon on interface = %s",
 
207
                log_message(LOG_INFO, "   Runing LVS sync daemon on interface = %s",
205
208
                       vrrp->lvs_syncd_if);
206
209
        if (vrrp->garp_delay)
207
 
                syslog(LOG_INFO, "   Gratuitous ARP delay = %d",
 
210
                log_message(LOG_INFO, "   Gratuitous ARP delay = %d",
208
211
                       vrrp->garp_delay/TIMER_HZ);
209
 
        syslog(LOG_INFO, "   Virtual Router ID = %d", vrrp->vrid);
210
 
        syslog(LOG_INFO, "   Priority = %d", vrrp->base_priority);
211
 
        syslog(LOG_INFO, "   Advert interval = %dsec",
 
212
        log_message(LOG_INFO, "   Virtual Router ID = %d", vrrp->vrid);
 
213
        log_message(LOG_INFO, "   Priority = %d", vrrp->base_priority);
 
214
        log_message(LOG_INFO, "   Advert interval = %dsec",
212
215
               vrrp->adver_int / TIMER_HZ);
213
216
        if (vrrp->nopreempt)
214
 
                syslog(LOG_INFO, "   Preempt disabled");
 
217
                log_message(LOG_INFO, "   Preempt disabled");
215
218
        if (vrrp->preempt_delay)
216
 
                syslog(LOG_INFO, "   Preempt delay = %ld secs",
 
219
                log_message(LOG_INFO, "   Preempt delay = %ld secs",
217
220
                       vrrp->preempt_delay / TIMER_HZ);
218
221
        if (vrrp->auth_type) {
219
 
                syslog(LOG_INFO, "   Authentication type = %s",
 
222
                log_message(LOG_INFO, "   Authentication type = %s",
220
223
                       (vrrp->auth_type ==
221
224
                        VRRP_AUTH_AH) ? "IPSEC_AH" : "SIMPLE_PASSWORD");
222
 
                syslog(LOG_INFO, "   Password = %s", vrrp->auth_data);
 
225
                log_message(LOG_INFO, "   Password = %s", vrrp->auth_data);
223
226
        }
224
227
        if (!LIST_ISEMPTY(vrrp->track_ifp)) {
225
 
                syslog(LOG_INFO, "   Tracked interfaces = %d", LIST_SIZE(vrrp->track_ifp));
 
228
                log_message(LOG_INFO, "   Tracked interfaces = %d", LIST_SIZE(vrrp->track_ifp));
226
229
                dump_list(vrrp->track_ifp);
227
230
        }
228
231
        if (!LIST_ISEMPTY(vrrp->track_script)) {
229
 
                syslog(LOG_INFO, "   Tracked scripts = %d",
 
232
                log_message(LOG_INFO, "   Tracked scripts = %d",
230
233
                       LIST_SIZE(vrrp->track_script));
231
234
                dump_list(vrrp->track_script);
232
235
        }
233
236
        if (!LIST_ISEMPTY(vrrp->vip)) {
234
 
                syslog(LOG_INFO, "   Virtual IP = %d", LIST_SIZE(vrrp->vip));
 
237
                log_message(LOG_INFO, "   Virtual IP = %d", LIST_SIZE(vrrp->vip));
235
238
                dump_list(vrrp->vip);
236
239
        }
237
240
        if (!LIST_ISEMPTY(vrrp->evip)) {
238
 
                syslog(LOG_INFO, "   Virtual IP Excluded = %d", LIST_SIZE(vrrp->evip));
 
241
                log_message(LOG_INFO, "   Virtual IP Excluded = %d", LIST_SIZE(vrrp->evip));
239
242
                dump_list(vrrp->evip);
240
243
        }
241
244
        if (!LIST_ISEMPTY(vrrp->vroutes)) {
242
 
                syslog(LOG_INFO, "   Virtual Routes = %d", LIST_SIZE(vrrp->vroutes));
 
245
                log_message(LOG_INFO, "   Virtual Routes = %d", LIST_SIZE(vrrp->vroutes));
243
246
                dump_list(vrrp->vroutes);
244
247
        }
245
248
        if (vrrp->script_backup)
246
 
                syslog(LOG_INFO, "   Backup state transition script = %s",
 
249
                log_message(LOG_INFO, "   Backup state transition script = %s",
247
250
                       vrrp->script_backup);
248
251
        if (vrrp->script_master)
249
 
                syslog(LOG_INFO, "   Master state transition script = %s",
 
252
                log_message(LOG_INFO, "   Master state transition script = %s",
250
253
                       vrrp->script_master);
251
254
        if (vrrp->script_fault)
252
 
                syslog(LOG_INFO, "   Fault state transition script = %s",
 
255
                log_message(LOG_INFO, "   Fault state transition script = %s",
253
256
                       vrrp->script_fault);
254
257
        if (vrrp->script_stop)
255
 
                syslog(LOG_INFO, "   Stop state transition script = %s",
 
258
                log_message(LOG_INFO, "   Stop state transition script = %s",
256
259
                       vrrp->script_stop);
257
260
        if (vrrp->script)
258
 
                syslog(LOG_INFO, "   Generic state transition script = '%s'",
 
261
                log_message(LOG_INFO, "   Generic state transition script = '%s'",
259
262
                       vrrp->script);
260
263
        if (vrrp->smtp_alert)
261
 
                syslog(LOG_INFO, "   Using smtp notification");
 
264
                log_message(LOG_INFO, "   Using smtp notification");
262
265
}
263
266
 
264
267
void
324
327
alloc_vrrp_vip(vector strvec)
325
328
{
326
329
        vrrp_rt *vrrp = LIST_TAIL_DATA(vrrp_data->vrrp);
 
330
        if (vrrp->ifp == NULL) {
 
331
                log_message(LOG_ERR, "Configuration error: VRRP definition must belong to an interface");
 
332
        }
327
333
 
328
334
        if (LIST_ISEMPTY(vrrp->vip))
329
335
                vrrp->vip = alloc_list(free_ipaddress, dump_ipaddress);
386
392
 
387
393
        new = (vrrp_conf_data *) MALLOC(sizeof (vrrp_conf_data));
388
394
        new->vrrp = alloc_list(free_vrrp, dump_vrrp);
389
 
        new->vrrp_index = alloc_mlist(NULL, NULL, 255);
 
395
        new->vrrp_index = alloc_mlist(NULL, NULL, 255+1);
390
396
        new->vrrp_index_fd = alloc_mlist(NULL, NULL, 1024+1);
391
397
        new->vrrp_sync_group = alloc_list(free_vgroup, dump_vgroup);
392
398
        new->vrrp_script = alloc_list(free_vscript, dump_vscript);
400
406
{
401
407
        free_list(vrrp_data_obj->static_addresses);
402
408
        free_list(vrrp_data_obj->static_routes);
403
 
        free_mlist(vrrp_data_obj->vrrp_index, 255);
 
409
        free_mlist(vrrp_data_obj->vrrp_index, 255+1);
404
410
        free_mlist(vrrp_data_obj->vrrp_index_fd, 1024+1);
405
411
        free_list(vrrp_data_obj->vrrp);
406
412
        free_list(vrrp_data_obj->vrrp_sync_group);
413
419
dump_vrrp_data(vrrp_conf_data * vrrp_data_obj)
414
420
{
415
421
        if (!LIST_ISEMPTY(vrrp_data_obj->static_addresses)) {
416
 
                syslog(LOG_INFO, "------< Static Addresses >------");
 
422
                log_message(LOG_INFO, "------< Static Addresses >------");
417
423
                dump_list(vrrp_data_obj->static_addresses);
418
424
        }
419
425
        if (!LIST_ISEMPTY(vrrp_data_obj->static_routes)) {
420
 
                syslog(LOG_INFO, "------< Static Routes >------");
 
426
                log_message(LOG_INFO, "------< Static Routes >------");
421
427
                dump_list(vrrp_data_obj->static_routes);
422
428
        }
423
429
        if (!LIST_ISEMPTY(vrrp_data_obj->vrrp)) {
424
 
                syslog(LOG_INFO, "------< VRRP Topology >------");
 
430
                log_message(LOG_INFO, "------< VRRP Topology >------");
425
431
                dump_list(vrrp_data_obj->vrrp);
426
432
        }
427
433
        if (!LIST_ISEMPTY(vrrp_data_obj->vrrp_sync_group)) {
428
 
                syslog(LOG_INFO, "------< VRRP Sync groups >------");
 
434
                log_message(LOG_INFO, "------< VRRP Sync groups >------");
429
435
                dump_list(vrrp_data_obj->vrrp_sync_group);
430
436
        }
431
437
        if (!LIST_ISEMPTY(vrrp_data_obj->vrrp_script)) {
432
 
                syslog(LOG_INFO, "------< VRRP Scripts >------");
 
438
                log_message(LOG_INFO, "------< VRRP Scripts >------");
433
439
                dump_list(vrrp_data_obj->vrrp_script);
434
440
        }
435
441
}