Skip to content

Commit b6681f9

Browse files
authored
Merge pull request #2466 from pqarmitage/updates
Revert commits 3ea412d and b93596f and only include changes to pidfile.c
2 parents 106851d + 2103ba2 commit b6681f9

24 files changed

+157
-317
lines changed

doc/man/man5/keepalived.conf.5.in

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,7 +1098,7 @@ sync group or real server monitors it.
10981098
A value will be read as a number in text from the file. If the weight
10991099
configured against the track_file is 0, a non-zero value in the file will
11001100
be treated as a failure status, and a zero value will be treated as
1101-
an OK status, otherwise the value will be multiplied by the weight configured
1101+
an OK status, otherwise the value will be multiplied by the weight configured
11021102
in the track_file statement.
11031103

11041104
For VRRP instances, if the result is less than -253 anything monitoring the
@@ -2334,11 +2334,6 @@ The syntax for virtual_server is :
23342334
# Minimum total weight of all live servers in
23352335
# the pool necessary to operate VS with no
23362336
# quality regression. Defaults to 1.
2337-
# If a sorry server is configured and the quorum
2338-
# is not met, any remaining alive real servers will
2339-
# be taken down and the sorry server enabled.
2340-
# If there is no sorry server, the remaining alive
2341-
# real servers will not be modified.
23422337
\fBquorum \fR<INTEGER>
23432338

23442339
# Tolerate this much weight units compared to the
@@ -2989,7 +2984,7 @@ There can be multiple ~SEQ elements on a line, so for example:
29892984
.SH List blocks
29902985
.PP
29912986
List blocks are similar to sequence blocks, except that the values to substitute into
2992-
the variable(s) are listed in the ~LST specification.
2987+
the variable are listed in the ~LST specification.
29932988

29942989
A line starting \fB~LST(var, val1, val2, val3)\fR will cause the remainder of the
29952990
line to be processed multiple times, with the variable \fB$var\fR set initially to

keepalived/check/check_api.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -120,18 +120,17 @@ dump_connection_opts(FILE *fp, const void *data)
120120

121121
/* Queue a checker into the real server's checkers_queue */
122122
void
123-
queue_checker(real_server_t *rs
124-
, const checker_funcs_t *funcs
123+
queue_checker(const checker_funcs_t *funcs
125124
, thread_func_t launch
126-
, checker_details_t checker_details
125+
, void *data
127126
, conn_opts_t *co
128127
, bool fd_required)
129128
{
130129
checker_t *checker;
131130

132131
/* Set default dst = RS, timeout = default */
133132
if (co) {
134-
co->dst = rs->addr;
133+
co->dst = current_rs->addr;
135134
co->connection_to = UINT_MAX;
136135
}
137136

@@ -140,8 +139,8 @@ queue_checker(real_server_t *rs
140139
checker->checker_funcs = funcs;
141140
checker->launch = launch;
142141
checker->vs = current_vs;
143-
checker->rs = rs;
144-
checker->check_type = checker_details;
142+
checker->rs = current_rs;
143+
checker->data = data;
145144
checker->co = co;
146145
checker->enabled = true;
147146
checker->alpha = -1;
@@ -157,7 +156,7 @@ queue_checker(real_server_t *rs
157156
if (fd_required)
158157
check_data->num_checker_fd_required++;
159158

160-
list_add_tail(&checker->rs_list, &rs->checkers_list);
159+
list_add_tail(&checker->rs_list, &current_rs->checkers_list);
161160

162161
current_checker = checker;
163162
}

keepalived/check/check_bfd.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ static void bfd_check_thread(thread_ref_t);
5454
static void
5555
free_bfd_check(checker_t *checker)
5656
{
57-
bfd_checker_t *bfd_checker = checker->check_type.bfd_check;
57+
bfd_checker_t *bfd_checker = checker->data;
5858

5959
FREE(bfd_checker);
6060
FREE(checker);
@@ -63,7 +63,7 @@ free_bfd_check(checker_t *checker)
6363
static void
6464
dump_bfd_check(FILE *fp, const checker_t *checker)
6565
{
66-
const bfd_checker_t *bfd_checker = checker->check_type.bfd_check;
66+
const bfd_checker_t *bfd_checker = checker->data;
6767

6868
conf_write(fp, " Keepalive method = BFD_CHECK");
6969
conf_write(fp, " Name = %s", bfd_checker->bfd->bname);
@@ -108,8 +108,8 @@ dump_bfds_rs_list(FILE *fp, const list_head_t *l)
108108
static bool
109109
compare_bfd_check(const checker_t *old_c, checker_t *new_c)
110110
{
111-
const bfd_checker_t *old = old_c->check_type.bfd_check;
112-
const bfd_checker_t *new = new_c->check_type.bfd_check;
111+
const bfd_checker_t *old = old_c->data;
112+
const bfd_checker_t *new = new_c->data;
113113

114114
if (strcmp(old->bfd->bname, new->bfd->bname))
115115
return false;
@@ -135,13 +135,13 @@ static const checker_funcs_t bfd_checker_funcs = { CHECKER_BFD, free_bfd_check,
135135
static void
136136
bfd_check_handler(__attribute__((unused)) const vector_t *strvec)
137137
{
138-
checker_details_t checker_details;
138+
bfd_checker_t *new_bfd_checker;
139139

140-
PMALLOC(checker_details.bfd_check);
141-
INIT_LIST_HEAD(&checker_details.bfd_check->e_list);
140+
PMALLOC(new_bfd_checker);
141+
INIT_LIST_HEAD(&new_bfd_checker->e_list);
142142

143143
/* queue new checker */
144-
queue_checker(current_rs, &bfd_checker_funcs, NULL, checker_details, NULL, false);
144+
queue_checker(&bfd_checker_funcs, NULL, new_bfd_checker, NULL, false);
145145
}
146146

147147
static void
@@ -153,7 +153,7 @@ bfd_name_handler(const vector_t *strvec)
153153
bool config_error = true;
154154
char *name;
155155

156-
bfdc = current_checker->check_type.bfd_check;
156+
bfdc = current_checker->data;
157157

158158
if (vector_size(strvec) >= 2)
159159
name = vector_slot(strvec, 1);
@@ -224,7 +224,7 @@ bfd_end_handler(void)
224224
tracking_obj_t *top;
225225
cref_tracked_bfd_t *tbfd;
226226

227-
bfdc = current_checker->check_type.bfd_check;
227+
bfdc = current_checker->data;
228228

229229
if (!bfdc->bfd) {
230230
report_config_error(CONFIG_GENERAL_ERROR, "(%s) No name has been specified for BFD_CHECKER - skipping"

keepalived/check/check_daemon.c

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -424,40 +424,19 @@ start_check(data_t *prev_global_data)
424424
/* Set up the track files */
425425
add_rs_to_track_files();
426426
init_track_files(&check_data->track_files);
427-
dump_vs_rs_checker_state("after init_track_files");
428427

429428
/* Processing differential configuration parsing */
430429
set_track_file_weights();
431-
dump_vs_rs_checker_state("after set_track_file_weights");
432-
//#define MOVE_CLEAR_DIFF_SVCS
433-
#ifndef MOVE_CLEAR_DIFF_SVCS
434430
if (reload)
435-
{
436431
clear_diff_services();
437-
dump_vs_rs_checker_state("after clear_diff_services");
438-
}
439-
#endif
440432
set_track_file_checkers_down();
441-
dump_vs_rs_checker_state("after set_track_file_checkers_down");
442433
set_effective_weights();
443-
dump_vs_rs_checker_state("after set_effective_weights");
444434
if (reload)
445-
{
446435
check_new_rs_state();
447-
dump_vs_rs_checker_state("after check_new_rs_state");
448-
}
449-
#ifdef MOVE_CLEAR_DIFF_SVCS
450-
if (reload)
451-
{
452-
clear_diff_services();
453-
dump_vs_rs_checker_state("after clear_diff_services");
454-
}
455-
#endif
456436

457437
/* Initialize IPVS topology */
458438
if (!init_services())
459439
stop_check(KEEPALIVED_EXIT_FATAL);
460-
dump_vs_rs_checker_state("after init_services");
461440

462441
#ifndef _ONE_PROCESS_DEBUG_
463442
/* Notify parent config has been read if appropriate */
@@ -478,7 +457,6 @@ dump_vs_rs_checker_state("after init_services");
478457

479458
/* Set the process cpu affinity if configured */
480459
set_process_cpu_affinity(&global_data->checker_cpu_mask, "checker");
481-
dump_vs_rs_checker_state("end of start_check");
482460
}
483461

484462
void
@@ -507,7 +485,6 @@ reload_check_thread(__attribute__((unused)) thread_ref_t thread)
507485

508486
/* set the reloading flag */
509487
SET_RELOAD;
510-
dump_vs_rs_checker_state("Pre reload");
511488

512489
/* Terminate all script process */
513490
script_killall(master, SIGTERM, false);
@@ -783,7 +760,6 @@ start_check_child(void)
783760
separate_config_file();
784761

785762
/* Child process part, write pidfile */
786-
log_message(LOG_INFO, "pidfile fd %d, name %s", checkers_pidfile.fd, checkers_pidfile.path);
787763
if (!pidfile_write(&checkers_pidfile)) {
788764
log_message(LOG_INFO, "Healthcheck child process: cannot write pidfile");
789765
exit(KEEPALIVED_EXIT_FATAL);

keepalived/check/check_dns.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ dns_recv_thread(thread_ref_t thread)
179179
int flags, rcode;
180180

181181
checker_t *checker = THREAD_ARG(thread);
182-
dns_check_t *dns_check = checker->check_type.dns_check;
182+
dns_check_t *dns_check = CHECKER_ARG(checker);
183183

184184
if (thread->type == THREAD_READ_TIMEOUT) {
185185
dns_final(thread, true, "read timeout from socket");
@@ -257,7 +257,7 @@ dns_make_query(thread_ref_t thread)
257257
const char *s, *e;
258258
size_t n;
259259
checker_t *checker = THREAD_ARG(thread);
260-
dns_check_t *dns_check = checker->check_type.dns_check;
260+
dns_check_t *dns_check = CHECKER_ARG(checker);
261261
dns_header_t *header = PTR_CAST(dns_header_t, dns_check->sbuf);
262262

263263
DNS_SET_RD(flags, 1); /* Recursion Desired */
@@ -296,7 +296,7 @@ static void
296296
dns_send(thread_ref_t thread)
297297
{
298298
checker_t *checker = THREAD_ARG(thread);
299-
dns_check_t *dns_check = checker->check_type.dns_check;
299+
dns_check_t *dns_check = CHECKER_ARG(checker);
300300
unsigned long timeout;
301301
ssize_t ret;
302302

@@ -430,18 +430,18 @@ dns_connect_thread(thread_ref_t thread)
430430
static void
431431
free_dns_check(checker_t *checker)
432432
{
433-
dns_check_t *dns_check = checker->check_type.dns_check;
433+
dns_check_t *dns_check = checker->data;
434434

435435
FREE_CONST(dns_check->name);
436436
FREE(checker->co);
437-
FREE(checker->check_type.dns_check);
437+
FREE(checker->data);
438438
FREE(checker);
439439
}
440440

441441
static void
442442
dump_dns_check(FILE *fp, const checker_t *checker)
443443
{
444-
const dns_check_t *dns_check = checker->check_type.dns_check;
444+
const dns_check_t *dns_check = checker->data;
445445

446446
conf_write(fp, " Keepalive method = DNS_CHECK");
447447
conf_write(fp, " Type = %s", dns_type_name(dns_check->type));
@@ -451,8 +451,8 @@ dump_dns_check(FILE *fp, const checker_t *checker)
451451
static bool
452452
compare_dns_check(const checker_t *old_c, checker_t *new_c)
453453
{
454-
const dns_check_t *old = old_c->check_type.dns_check;
455-
const dns_check_t *new = new_c->check_type.dns_check;
454+
const dns_check_t *old = old_c->data;
455+
const dns_check_t *new = new_c->data;
456456

457457
if (!compare_conn_opts(old_c->co, new_c->co))
458458
return false;
@@ -469,12 +469,12 @@ static const checker_funcs_t dns_checker_funcs = { CHECKER_DNS, free_dns_check,
469469
static void
470470
dns_check_handler(__attribute__((unused)) const vector_t *strvec)
471471
{
472-
checker_details_t checker_details;
472+
dns_check_t *dns_check;
473473

474-
PMALLOC(checker_details.dns_check);
475-
checker_details.dns_check->type = DNS_DEFAULT_TYPE;
476-
queue_checker(current_rs, &dns_checker_funcs, dns_connect_thread,
477-
checker_details, CHECKER_NEW_CO(), true);
474+
PMALLOC(dns_check);
475+
dns_check->type = DNS_DEFAULT_TYPE;
476+
queue_checker(&dns_checker_funcs, dns_connect_thread,
477+
dns_check, CHECKER_NEW_CO(), true);
478478

479479
/* Set the non-standard retry time */
480480
current_checker->default_retry = DNS_DEFAULT_RETRY;
@@ -484,7 +484,7 @@ dns_check_handler(__attribute__((unused)) const vector_t *strvec)
484484
static void
485485
dns_type_handler(const vector_t *strvec)
486486
{
487-
dns_check_t *dns_check = current_checker->check_type.dns_check;
487+
dns_check_t *dns_check = current_checker->data;
488488
uint16_t dns_type;
489489

490490
dns_type = dns_type_lookup(strvec_slot(strvec, 1));
@@ -498,7 +498,7 @@ dns_type_handler(const vector_t *strvec)
498498
static void
499499
dns_name_handler(const vector_t *strvec)
500500
{
501-
dns_check_t *dns_check = current_checker->check_type.dns_check;
501+
dns_check_t *dns_check = current_checker->data;
502502
const char *name;
503503
bool name_invalid = false;
504504
const char *p;
@@ -532,7 +532,7 @@ dns_name_handler(const vector_t *strvec)
532532
static void
533533
dns_check_end(void)
534534
{
535-
dns_check_t *dns_check = current_checker->check_type.dns_check;
535+
dns_check_t *dns_check = current_checker->data;
536536

537537
if (!check_conn_opts(current_checker->co)) {
538538
dequeue_new_checker();

keepalived/check/check_file.c

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* <www.linuxvirtualserver.org>. It monitor & manipulate
44
* a loadbalanced server pool using multi-layer checks.
55
*
6-
* Part: FILE CHECK. Monitor contents of a file
6+
* Part: FILE CHECK. Monitor contents if a file
77
*
88
* Authors: Quentin Armitage, <[email protected]>
99
*
@@ -46,7 +46,7 @@ free_file_check(checker_t *checker)
4646
static void
4747
dump_file_check(FILE *fp, const checker_t *checker)
4848
{
49-
tracked_file_t *tfp = checker->check_type.file_check;
49+
tracked_file_t *tfp = checker->data;
5050

5151
conf_write(fp, " Keepalive method = FILE_CHECK");
5252
conf_write(fp, " Tracked file = %s", tfp->fname);
@@ -64,14 +64,6 @@ track_file_handler(const vector_t *strvec)
6464
return;
6565
}
6666

67-
if (current_tfile->file) {
68-
report_config_error(CONFIG_GENERAL_ERROR, "%s track_file already specified as %s - ignoring %s", FMT_RS(current_rs, current_vs), current_tfile->file->fname, strvec_slot(strvec, 1));
69-
return;
70-
}
71-
72-
if (vector_size(strvec) > 2)
73-
report_config_error(CONFIG_WARNING, "%s track_file %s has extra parameters - ignoring %s ...", FMT_RS(current_rs, current_vs), strvec_slot(strvec, 1), strvec_slot(strvec, 2));
74-
7567
current_tfile->file = vsf;
7668
}
7769

@@ -114,7 +106,6 @@ track_file_weight_handler(const vector_t *strvec)
114106

115107
current_tfile->weight = weight;
116108
current_tfile->weight_reverse = reverse;
117-
log_message(LOG_INFO, "Set track_file weight %d", current_tfile->weight);
118109
}
119110

120111
static void
@@ -156,16 +147,14 @@ add_rs_to_track_files(void)
156147
{
157148
virtual_server_t *vs;
158149
real_server_t *rs;
159-
checker_details_t checker_details;
160150
tracked_file_monitor_t *tfl;
161151

162152
list_for_each_entry(vs, &check_data->vs, e_list) {
163153
list_for_each_entry(rs, &vs->rs, e_list) {
164154
list_for_each_entry(tfl, &rs->track_files, e_list) {
165155
/* queue new checker - we don't have a compare function since we don't
166156
* update file checkers that way on a reload. */
167-
checker_details.file_check = tfl->file;
168-
queue_checker(rs, &file_checker_funcs, NULL, checker_details, NULL, false);
157+
queue_checker(&file_checker_funcs, NULL, tfl->file, NULL, false);
169158
current_checker->vs = vs;
170159
current_checker->rs = rs;
171160

keepalived/check/check_genhash.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ genhash_usage(const char *prog, bool am_genhash)
8686
static int
8787
check_genhash_parse_cmdline(int argc, char **argv, checker_t *checker)
8888
{
89-
http_checker_t *http_get_check = checker->check_type.http_check;
89+
http_checker_t *http_get_check = checker->data;
9090
conn_opts_t *co = checker->co;
9191
const char *start;
9292
char *endptr;
@@ -131,7 +131,7 @@ check_genhash_parse_cmdline(int argc, char **argv, checker_t *checker)
131131
bad_option = true;
132132
break;
133133
case 'v':
134-
((http_checker_t *)checker->check_type.http_check)->genhash_flags |= GENHASH_VERBOSE;
134+
((http_checker_t *)checker->data)->genhash_flags |= GENHASH_VERBOSE;
135135
break;
136136
case 'S':
137137
http_get_check->proto = PROTO_SSL;
@@ -290,7 +290,7 @@ check_genhash(bool am_genhash, int argc, char **argv)
290290
INIT_LIST_HEAD(&http_get_check->url);
291291
http_get_check->genhash_flags = GENHASH;
292292
http_get_check->proto = PROTO_HTTP;
293-
checker->check_type.http_check = http_get_check;
293+
checker->data = http_get_check;
294294
checker->enabled = true;
295295

296296
/* Parse command line */

0 commit comments

Comments
 (0)