commit - 4a206fc9175ec29f3356e0b5c39fd970b9933e33
commit + 0b2616cd90a96a2513145dfa69fd3df1a953f855
blob - ff8d53e934c2ebe0de0152ddb94ade37727ff8c5
blob + 2a2eb15759e20dc315562c81875d4dd287c676ee
--- commands.c
+++ commands.c
*/
#define ssctl sizeof(struct ctl)
-#define ssctl2 sizeof(struct ctl2)
Command cmdtab[] = {
{ "hostname", hostnamehelp, CMPL0 0, 0, hostname, 1, 1, 0, 0 },
{ "interface", interfacehelp, CMPL(i) 0, 0, interface, 1, 1, 1, 1 },
{ "dvmrp", dvmrphelp, CMPL(t) (char **)ctl_dvmrp, ssctl, ctlhandler, 1, 1, 0, 1 },
{ "rad", radhelp, CMPL(t) (char **)ctl_rad, ssctl, ctlhandler, 1, 1, 0, 1 },
{ "sasync", sasynchelp, CMPL(t) (char **)ctl_sasync, ssctl, ctlhandler, 1, 1, 0, 1 },
- { "dhcp", dhcphelp, CMPL(t) (char **)ctl_dhcp, ssctl2, ctlhandler, 1, 1, 0, 1 },
+ { "dhcp", dhcphelp, CMPL(t) (char **)ctl_dhcp, ssctl, ctlhandler, 1, 1, 0, 1 },
{ "snmp", snmphelp, CMPL(t) (char **)ctl_snmp, ssctl, ctlhandler, 1, 1, 0, 1 },
{ "ldap", ldaphelp, CMPL(t) (char **)ctl_ldap, ssctl, ctlhandler, 1, 1, 0, 1 },
{ "smtp", smtphelp, CMPL(t) (char **)ctl_smtp, ssctl, ctlhandler, 1, 1, 0, 1 },
blob - ae6e56540ceb9ca63ab56bfd40d22810c7e1fe64
blob + 533d83ce46d783e384d5be300f093205ace223db
--- conf.c
+++ conf.c
{
FILE *conf;
struct daemons *x;
- struct daemons2 *x2;
- struct ctl *ctl, *x_table = NULL;
- struct ctl2 *ctl2, *x2_table = NULL;
+ struct ctl *ctl;
char tmp_str[TMPSIZ], tmpfile[64];
char *fenablenm = NULL, *fothernm = NULL, *flocalnm = NULL;
- int defenable = 0, pntdrules = 0, pntdflag = 0, dbflag, x_doreload = 0;
- char *x_tmpfile, *x_name;
+ int defenable = 0, pntdrules = 0, pntdflag = 0, dbflag;
x = (struct daemons *)genget(name, (char **)ctl_daemons,
sizeof(struct daemons));
- if (x == NULL) {
- x2 = (struct daemons2 *)genget(name, (char **)ctl_daemons2,
- sizeof(struct daemons2));
- if (x2 == NULL || Ambiguous(x2)) {
- printf("%% conf_ctl: %s: genget internal failure\n",
- name);
- return;
- }
- x_tmpfile = x2->tmpfile;
- x_name = x2->name;
- x_doreload = x2->doreload;
- x2_table = x2->table;
- } else {
- if (Ambiguous(x)) {
- printf("%% conf_ctl: %s: genget internal failure\n",
- name);
- return;
- }
-
- x_tmpfile = x->tmpfile;
- x_name = x->name;
- x_doreload = x->doreload;
- x_table = x->table;
+ if (x == NULL || Ambiguous(x)) {
+ printf("%% conf_ctl: %s: genget internal failure\n",
+ name);
+ return;
}
/* print rules if they exist */
- snprintf(tmpfile, sizeof(tmpfile), "%s.%d", x_tmpfile, rtableid);
+ snprintf(tmpfile, sizeof(tmpfile), "%s.%d", x->tmpfile, rtableid);
if ((conf = fopen(tmpfile, "r")) != NULL) {
fprintf(output, "%s%s rules\n", delim, name);
for (;;) {
printf("%% conf_ctl: %s: %s\n", tmpfile, strerror(errno));
/* fill in argument names from table */
- for (ctl = x_table; ctl != NULL && ctl->name != NULL; ctl++) {
+ for (ctl = x->table; ctl != NULL && ctl->name != NULL; ctl++) {
get_argnames(ctl->flag_x, ctl->name, &defenable, &fenablenm,
&flocalnm, &fothernm);
}
- for (ctl2 = x2_table; ctl2 != NULL && ctl2->name != NULL; ctl2++) {
- get_argnames(ctl2->flag_x, ctl2->name, &defenable, &fenablenm,
- &flocalnm, &fothernm);
- }
/* print rules as currently enabled in running time database */
- if ((dbflag = db_select_flag_x_dbflag_rtable("ctl", x_name, rtableid))
+ if ((dbflag = db_select_flag_x_dbflag_rtable("ctl", x->name, rtableid))
< 0) {
- printf("%% database ctl select failure (%s, %d)\n", x_name, rtableid);
+ printf("%% database ctl select failure (%s, %d)\n", x->name,
+ rtableid);
return;
}
switch(dbflag) {
case DB_X_ENABLE:
- fprintf(output, "%s%s %s\n", delim, x_name, fenablenm ?
+ fprintf(output, "%s%s %s\n", delim, x->name, fenablenm ?
fenablenm : "enable");
pntdflag = 1;
break;
case DB_X_LOCAL:
- fprintf(output, "%s%s %s\n", delim, x_name, flocalnm ?
+ fprintf(output, "%s%s %s\n", delim, x->name, flocalnm ?
flocalnm : "local");
pntdflag = 1;
break;
case DB_X_OTHER:
- fprintf(output, "%s%s %s\n", delim, x_name, fothernm ?
+ fprintf(output, "%s%s %s\n", delim, x->name, fothernm ?
fothernm : "other");
pntdflag = 1;
break;
case DB_X_DISABLE_ALWAYS:
- fprintf(output, "%s%s disable\n", delim, x_name);
+ fprintf(output, "%s%s disable\n", delim, x->name);
pntdflag = 1;
/* FALLTHROUGH */
case DB_X_DISABLE:
printf("%% conf_ctl: dbflag %d unknown\n", dbflag);
}
if (defenable) {
- fprintf(output, "%s%s %s\n", delim, x_name, fenablenm ?
+ fprintf(output, "%s%s %s\n", delim, x->name, fenablenm ?
fenablenm : "enable");
pntdflag = 1;
}
- if (pntdrules && x_doreload) {
- fprintf(output, "%s%s reload\n", delim, x_name);
+ if (pntdrules && x->doreload) {
+ fprintf(output, "%s%s reload\n", delim, x->name);
pntdflag = 1;
}
if (pntdflag)
blob - f5b393c9d71f9dbe31718db7682a8101876ed4cf
blob + 45e48e3aac7ea6216f5f45d3920d8d040bceafee
--- ctl.c
+++ ctl.c
#include "editing.h"
#include "ctl.h"
-static inline void
-ctl2toctl(struct ctl *ctl, const struct ctl2 *ctl2)
-{
- ctl->name = ctl2->name;
- ctl->help = ctl2->help;
- memcpy(ctl->args, ctl2->args, sizeof(ctl->args));
- if (ctl2->type == T_HANDLER_FILL1)
- ctl->args[1] = (char *)ctl2->test_args;
- ctl->handler = ctl2->handler;
- ctl->flag_x = ctl->flag_x;
- ctl->type = ctl->type;
-}
-
-static inline int
-daemons2todaemons(struct daemons *daemons, const struct daemons2 *daemons2)
-{
- size_t nentries = 0;
- struct ctl *ctl1;
- struct ctl2 *ctl2;
-
- ctl2 = daemons2->table;
- while (ctl2 && ctl2->name) {
- nentries++;
- ctl2++;
- }
- daemons->table = calloc(nentries + 1, sizeof(struct ctl));
- if (daemons->table == NULL) {
- printf("%% %s: malloc: %s\n", __func__, strerror(errno));
- return 1;
- }
- ctl1 = daemons->table;
- ctl2 = daemons2->table;
- while (ctl2 && ctl2->name) {
- ctl2toctl(ctl1, ctl2);
- ctl1++;
- ctl2++;
- }
-
- daemons->name = daemons2->name;
- daemons->propername = daemons2->propername;
- daemons->tmpfile = daemons2->tmpfile;
- daemons->mode = daemons2->mode;
- daemons->doreload = daemons2->doreload;
- daemons->rtablemax = daemons2->rtablemax;
-
- return 0;
-}
-
/* table variable (for pkill usage) */
static char table[16];
{ "motd", "MOTD", ctl_motd, MOTD_TEMP,0644, 0, 0 },
{ "crontab", "crontab", ctl_crontab, CRONTAB_TEMP, 0600, 0, 0 },
{ "scheduler", "scheduler", ctl_crontab, CRONTAB_TEMP, 0600, 0, 0 },
-{ 0, 0, 0, 0, 0, 0 }
-};
-
-struct daemons2 ctl_daemons2[] = {
{ "dhcp", "DHCP", ctl_dhcp, DHCPCONF_TEMP, 0600, 0, RT_TABLEID_MAX },
{ NULL, NULL, NULL, NULL, 0, 0, 0 }
};
/* CRONTAB */
struct ctl ctl_crontab[] = {
{ "edit", "edit scheduled background jobs",
- { "crontab", NULL, NULL }, edit_crontab, 0, T_HANDLER },
+ { "crontab", NULL, NULL }, { NULL }, edit_crontab, 0, T_HANDLER },
{ "install", "install scheduled background job config",
- { "crontab", NULL, NULL }, install_crontab, 0, T_HANDLER },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { "crontab", NULL, NULL }, { NULL }, install_crontab, 0,
+ T_HANDLER },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
-
/* MOTD */
struct ctl ctl_motd[] = {
{ "edit", "edit message-of-the-day",
- { "motd", NULL, NULL }, edit_motd, 0, T_HANDLER },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { "motd", NULL, NULL }, { NULL }, edit_motd, 0, T_HANDLER },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* PF, pfctl */
-char *ctl_pf_test[] = { PFCTL, "-nf", REQTEMP, NULL };
struct ctl ctl_pf[] = {
{ "enable", "enable pf firewall",
- { PFCTL, "-e", NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { PFCTL, "-e", NULL }, { NULL }, NULL, DB_X_ENABLE, T_EXEC },
{ "disable", "disable pf firewall",
- { PFCTL, "-d", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PFCTL, "-d", NULL }, { NULL }, NULL, DB_X_DISABLE, T_EXEC },
{ "edit", "edit, test and stage firewall rules",
- { "pf", (char *)ctl_pf_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "pf", NULL },
+ { PFCTL, "-nf", REQTEMP, NULL }, call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test and display staged firewall rules",
- { PFCTL, "-nvvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { PFCTL, "-nvvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and apply staged firewall rules",
- { PFCTL, "-f", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { PFCTL, "-f", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* ospfd, ospfctl */
-char *ctl_ospf_test[] = { OSPFD, "-nf", REQTEMP, NULL };
struct ctl ctl_ospf[] = {
{ "enable", "enable OSPFd daemon",
- { OSPFD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { OSPFD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable OSPFd daemon",
- { PKILL, table, "ospfd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "ospfd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit, test and stage OSPFd config",
- { "ospf", (char *)ctl_ospf_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "ospf", NULL },
+ { OSPFD, "-nf", REQTEMP, NULL }, call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged OSPFd config",
- { OSPFD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { OSPFD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and appy staged OSPFd config",
- { OSPFCTL, "reload", NULL }, NULL, 0, T_EXEC },
+ { OSPFCTL, "reload", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "fib", "fib couple/decouple",
- { OSPFCTL, "fib", REQ, NULL }, NULL, 0, T_EXEC },
+ { OSPFCTL, "fib", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "log", "config OSPFd logging, brief/verbose",
- { OSPFCTL, "log", REQ, NULL }, NULL, 0, T_EXEC },
+ { OSPFCTL, "log", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "show", "show OSPFd db/fib/interfaces/neighbor/rib/summary",
- { OSPFCTL, "show", REQ, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { OSPFCTL, "show", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* ospf6d, ospf6ctl */
-char *ctl_ospf6_test[] = { OSPF6D, "-nf", REQTEMP, NULL };
struct ctl ctl_ospf6[] = {
{ "enable", "enable OSPF6d OSPFv3 daemon",
- { OSPF6D, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { OSPF6D, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable OSPF6d OSPFv3 daemon",
- { PKILL, table, "ospf6d", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "ospf6d", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit, test and stage OSPF6d config",
- { "ospf6", (char *)ctl_ospf6_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "ospf6", NULL }, { OSPF6D, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged OSPF6d config",
- { OSPF6D, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { OSPF6D, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and apply staged OSPF6d config",
- { OSPF6CTL, "reload", NULL }, NULL, 0, T_EXEC },
+ { OSPF6CTL, "reload", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "fib", "fib couple/decouple",
- { OSPF6CTL, "fib", REQ, NULL }, NULL, 0, T_EXEC },
+ { OSPF6CTL, "fib", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "log", "config OSPF6d logging, brief/verbose",
- { OSPF6CTL, "log", REQ, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { OSPF6CTL, "log", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* eigrpd, eigrpctl */
-char *ctl_eigrp_test[] = { EIGRPD, "-nf", REQTEMP, NULL };
struct ctl ctl_eigrp[] = {
{ "enable", "enable EIGRPd daemon",
- { EIGRPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { EIGRPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable EIGRPd daemon",
- { PKILL, table, "eigrpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "eigrpd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit, test and stage EIGRPd config",
- { "eigrp", (char *)ctl_eigrp_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "eigrp", NULL }, { EIGRPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged EIGRPd config",
- { EIGRPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { EIGRPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and apply stagged EIGRPd config",
- { EIGRPCTL, "reload", NULL }, NULL, 0, T_EXEC },
+ { EIGRPCTL, "reload", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "fib", "fib couple/decouple",
- { EIGRPCTL, "fib", REQ, NULL }, NULL, 0, T_EXEC },
+ { EIGRPCTL, "fib", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "log", "config EIGRPd loggging, brief/verbose",
- { EIGRPCTL, "lob", REQ, NULL }, NULL, 0, T_EXEC },
+ { EIGRPCTL, "lob", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "show", "show fib/interfaces/neighbor/topology/traffic",
- { EIGRPCTL, "show", REQ, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { EIGRPCTL, "show", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* bgpd, bgpctl */
-char *ctl_bgp_test[] = { BGPD, "-nf", REQTEMP, NULL, NULL };
struct ctl ctl_bgp[] = {
{ "enable", "enable OpenBGPD daemon",
- { BGPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { BGPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable OpenBGPD daemon",
- { PKILL, "bgpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, "bgpd", NULL }, { NULL }, NULL, DB_X_DISABLE, T_EXEC },
{ "edit", "edit, test and stage OpenBGPD config",
- { "bgp", (char *)ctl_bgp_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "bgp", NULL }, { BGPD, "-nf", REQTEMP, NULL, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged OpenBGPD config",
- { BGPD, "-nvf",REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { BGPD, "-nvf",REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and apply staged OpenBGPD config",
- { BGPCTL, "reload", NULL }, NULL, 0, T_EXEC },
+ { BGPCTL, "reload", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "fib", "fib couple/decouple",
- { BGPCTL, "fib", REQ, NULL }, NULL, 0, T_EXEC },
+ { BGPCTL, "fib", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "neighbor", "neighbor up/down/clear/refresh",
- { BGPCTL, "neighbor", OPT, OPT, NULL }, NULL, 0, T_EXEC },
+ { BGPCTL, "neighbor", OPT, OPT, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "network", "network add/delete/flush/show",
- { BGPCTL, "network", REQ, OPT, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { BGPCTL, "network", REQ, OPT, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* ripd, ripctl */
-char *ctl_rip_test[] = { RIPD, "-nf", REQTEMP, NULL };
struct ctl ctl_rip[] = {
{ "enable", "enable RIPd Routing Internet protocol daemon",
- { RIPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { RIPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable RIPd daemon",
- { PKILL, table, "ripd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "ripd", NULL }, { NULL }, NULL, DB_X_DISABLE, T_EXEC },
{ "edit", "edit, test and stage RIPd config",
- { "rip", (char *)ctl_rip_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "rip", NULL }, { RIPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged RIPd config",
- { RIPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { RIPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and apply staged ripd config",
- { RIPCTL, "reload", NULL }, NULL, 0, T_EXEC },
+ { RIPCTL, "reload", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "fib", "fib couple/decouple",
- { RIPCTL, "fib", REQ, NULL }, NULL, 0, T_EXEC },
+ { RIPCTL, "fib", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "show", "show fib/interfaces/neighbor/rib",
- { RIPCTL, "show", REQ, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { RIPCTL, "show", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* ldpd, ldpctl */
-char *ctl_ldp_test[] = { LDPD, "-nf", REQTEMP, NULL };
struct ctl ctl_ldp[] = {
{ "enable", "enable Label Distribution Protocol Daemon",
- { LDPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { LDPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE, T_EXEC },
{ "disable", "disable LDPd ",
- { PKILL, "ldpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, "ldpd", NULL }, { NULL }, NULL, DB_X_DISABLE, T_EXEC },
{ "edit", "edit, test and stage LDPd config",
- { "ldp", (char *)ctl_ldp_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "ldp", NULL }, { LDPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged LDPd config",
- { LDPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { LDPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and apply staged LDPd config",
- { LDPCTL, "reload", NULL }, NULL, 0, T_EXEC },
+ { LDPCTL, "reload", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "fib", "fib couple/decouple",
- { LDPCTL, "fib", REQ, NULL }, NULL, 0, T_EXEC },
+ { LDPCTL, "fib", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "clear", "clear LDPd neighbors",
- { LDPCTL, "show", REQ, NULL }, NULL, 0, T_EXEC },
+ { LDPCTL, "show", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "show", "show LDPd fib/interfaces/discovery/neighbor/lib",
- { LDPCTL, "show", REQ, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { LDPCTL, "show", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* isakmpd, ipsecctl */
-char *ctl_ipsec_test[] = { IPSECCTL, "-nf", REQTEMP, NULL };
struct ctl ctl_ipsec[] = {
{ "enable", "enable isakmpd IKEv1 daemon",
- { ISAKMPD, "-Kv", NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { ISAKMPD, "-Kv", NULL }, { NULL }, NULL, DB_X_ENABLE, T_EXEC },
{ "disable", "disable isakmpd IKEv1 daemon",
- { PKILL, table, "isakmpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "isakmpd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit, test and stage isakmpd config",
- { "ipsec", (char *)ctl_ipsec_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "ipsec", NULL }, { IPSECCTL, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged isakmpd config",
- { IPSECCTL, "-nvvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { IPSECCTL, "-nvvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and apply staged isakmpd config",
- { IPSECCTL, "-f", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { IPSECCTL, "-f", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "show", "show isakmpd flow/sa/all",
- { IPSECCTL, "-s", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { IPSECCTL, "-s", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* iked, ikectl */
-char *ctl_ike_test[] = { IKED, "-nf", REQTEMP, NULL };
struct ctl ctl_ike[] = {
{ "enable", "enable Internet Key Exchange V2 daemon",
- { IKED, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { IKED, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable IKEv2 daemon",
- { PKILL, table, "iked", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "iked", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "active", "force IKE active mode",
- { IKECTL, "active", NULL }, NULL, 0, T_EXEC },
+ { IKECTL, "active", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "passive", "force IKE passive mode",
- { IKECTL, "passive", NULL }, NULL, 0, T_EXEC },
+ { IKECTL, "passive", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "couple", "load SAs and flows into kernel",
- { IKECTL, "couple", NULL }, NULL, 0, T_EXEC },
+ { IKECTL, "couple", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "decouple", "unload SAs and flows from kernel",
- { IKECTL, "decouple", NULL }, NULL, 0, T_EXEC },
+ { IKECTL, "decouple", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "edit", "edit, test and stage IKEd config",
- { "ike", (char *)ctl_ike_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "ike", NULL }, { IKED, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test IKEd config",
- { IKED, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { IKED, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reload", "test and apply IKEd config",
- { IKECTL, "reload", NULL }, NULL, 0, T_EXEC },
+ { IKECTL, "reload", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "reset", "reset IKEd state, policies, SAs or user database",
- { IKECTL, "reset", REQ, NULL }, NULL, 0, T_EXEC },
+ { IKECTL, "reset", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "show", "show security associations",
- { IKECTL, "show", REQ, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { IKECTL, "show", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* dvmrpd */
-char *ctl_dvmrp_test[] = { DVMRPD, "-nf", REQTEMP, NULL };
struct ctl ctl_dvmrp[] = {
{ "enable", "enable Distance Vector Multicast Routing daemon",
- { DVMRPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { DVMRPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable DVMRPd daemon",
- { PKILL, table, "dvmrpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "dvmrpd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit,test and stage DVMRPd config",
- { "dvmrp", (char *)ctl_dvmrp_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "dvmrp", NULL }, { DVMRPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "config-test", "test staged DVMRPd config",
- { DVMRPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { DVMRPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "log", "configure DVMRPd logging, brief/verbose",
- { DVMRPCTL, "log", REQ, NULL }, NULL, 0, T_EXEC },
+ { DVMRPCTL, "log", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "show", "show igmp/interfaces/mfc/neighbor/rib/summary",
- { DVMRPCTL, "show", REQ, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { DVMRPCTL, "show", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* rad */
-char *ctl_rad_test[] = { RAD, "-nf", REQTEMP, NULL };
struct ctl ctl_rad[] = {
{ "enable", "enable RAD Router Advertisement daemon",
- { RAD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { RAD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE, T_EXEC },
{ "disable", "disable RAD daemon",
- { PKILL, "rad", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, "rad", NULL }, { NULL }, NULL, DB_X_DISABLE, T_EXEC },
{ "edit", "edit,test and stage RAD config",
- { "rad", (char *)ctl_rad_test, NULL}, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "rad", NULL}, { RAD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged RAD config",
- { RAD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { RAD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* ifstated */
-char *ctl_ifstate_test[] = { IFSTATED, "-nf", REQTEMP, NULL };
struct ctl ctl_ifstate[] = {
{ "enable", "enable ifstated daemon",
- { IFSTATED, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { IFSTATED, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable ifstated daemon",
- { PKILL, table, "ifstated", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "ifstated", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit, test and stage ifstated config",
- { "ifstate", (char *)ctl_ifstate_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "ifstate", NULL }, { IFSTATED, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "config-test", "test staged ifstated config ",
- { IFSTATED, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { IFSTATED, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* sasyncd */
-char *ctl_sasync_test[] = { SASYNCD, "-nvvc", REQTEMP, NULL };
struct ctl ctl_sasync[] = {
{ "enable", "enable SAsyncd daemon",
- { SASYNCD, "-c", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { SASYNCD, "-c", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable SAsyncd daemon",
- { PKILL, table, "sasyncd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "sasyncd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit, test and stage SAsyncd config",
- { "sasync", (char *)ctl_sasync_test, NULL }, call_editor, 0, T_HANDLER_FILL1 },
+ { "sasync", NULL }, { SASYNCD, "-nvvc", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged SAsyncd config",
- { SASYNCD, "-nvvc", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0 }
+ { SASYNCD, "-nvvc", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* npppd, npppctl */
-char *ctl_nppp_test[] = { NPPPD, "-nf", REQTEMP, NULL };
struct ctl ctl_nppp[] = {
{ "enable", "enable nPPPd Point to Point Protocol daemon",
- { NPPPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { NPPPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable nNPPPd daemon",
- { PKILL, table, "npppd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "npppd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "clear", "disconnect nPPPd sessions",
- { NPPPCTL, "clear", REQ, OPT, OPT, NULL }, NULL, 0, T_EXEC },
+ { NPPPCTL, "clear", REQ, OPT, OPT, NULL }, { NULL }, NULL, 0,
+ T_EXEC },
{ "session", "show nPPPd sessions",
- { NPPPCTL, "session", REQ, OPT, OPT, NULL }, NULL, 0, T_EXEC },
+ { NPPPCTL, "session", REQ, OPT, OPT, NULL }, { NULL }, NULL, 0,
+ T_EXEC },
{ "monitor", "monitor nPPPd sessions",
- { NPPPCTL, "monitor", REQ, OPT, OPT, NULL }, NULL, 0, T_EXEC },
+ { NPPPCTL, "monitor", REQ, OPT, OPT, NULL }, { NULL }, NULL, 0,
+ T_EXEC },
{ "edit", "edit ,test and stage nPPPd config",
- { "nppp", (char *)ctl_nppp_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "nppp", NULL }, { NPPPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged nPPPd config",
- { NPPPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { NPPPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* dhcpd */
-struct ctl2 ctl_dhcp[] = {
+struct ctl ctl_dhcp[] = {
{ "enable", "enable DHCPd daemon",
- { DHCPD, "-c", REQTEMP, "-l", DHCPLEASES, NULL }, { NULL, },
+ { DHCPD, "-c", REQTEMP, "-l", DHCPLEASES, NULL }, { NULL },
start_dhcpd, DB_X_ENABLE, T_HANDLER },
{ "disable", "disable DHCPd daemon",
- { PKILL, table, "dhcpd", NULL }, { NULL, }, NULL,
+ { PKILL, table, "dhcpd", NULL }, { NULL }, NULL,
DB_X_DISABLE, T_EXEC },
{ "edit", "edit,test and stage DHCPd config",
{ "dhcp", NULL }, { DHCPD, "-nc", REQTEMP, NULL }, call_editor, 0,
T_HANDLER_FILL1 },
{ "config-test", "test staged DHCPd config",
- { DHCPD, "-nc", REQTEMP, "-l", DHCPLEASES, NULL }, { NULL, },
+ { DHCPD, "-nc", REQTEMP, "-l", DHCPLEASES, NULL }, { NULL },
NULL, 0, T_EXEC },
{ "restart", "restart DHCPd daemon",
- { DHCPD, "-c", REQTEMP, "-l", DHCPLEASES, NULL }, { NULL, },
+ { DHCPD, "-c", REQTEMP, "-l", DHCPLEASES, NULL }, { NULL },
restart_dhcpd, DB_X_ENABLE, T_HANDLER },
{ NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* snmpd, snmpctl */
-char *ctl_snmp_test[] = { SNMPD, "-nf", REQTEMP, NULL };
struct ctl ctl_snmp[] = {
{ "enable", "enable OpenSNMPD daemon",
- { SNMPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { SNMPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable OpenSNMPD daemon",
- { PKILL, table, "snmpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "snmpd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit,test and stage OpenSNMPD config",
- { "snmp", (char *)ctl_snmp_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "snmp", NULL }, { SNMPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "config-test", "test staged OpenSNMPD config",
- { SNMPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { SNMPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* sshd */
-char *ctl_sshd_test[] = { SSHD, "-tf", REQTEMP, NULL };
struct ctl ctl_sshd[] = {
{ "enable", "enable OpenSSHD daemon",
- { SSHD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { SSHD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable OpenSSHD daemon",
- { PKILL, table, "-f", SSHD, "-f", REQTEMP, NULL }, NULL,
+ { PKILL, table, "-f", SSHD, "-f", REQTEMP, NULL }, { NULL }, NULL,
DB_X_DISABLE, T_EXEC },
{ "edit", "edit, test and stage OpenSSHD config",
- { "sshd", (char *)ctl_sshd_test, NULL }, call_editor, 0,
+ { "sshd", NULL }, { SSHD, "-tf", REQTEMP, NULL }, call_editor, 0,
T_HANDLER_FILL1 },
{ "config-test", "test staged OpenSSHD config",
- { SSHD, "-tf", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { SSHD, "-tf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* ntpd */
-char *ctl_ntp_test[] = { NTPD, "-nf", REQTEMP, NULL };
struct ctl ctl_ntp[] = {
{ "enable", "enable OpenNTPD daemon",
- { NTPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { NTPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable OpenNTPD daemon",
- { PKILL, "ntpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, "ntpd", NULL }, { NULL }, NULL, DB_X_DISABLE, T_EXEC },
{ "edit", "edit, test and stage OpenNTPD config",
- { "ntp", (char *)ctl_ntp_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "ntp", NULL }, { NTPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged OpenNTPD config",
- { NTPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { NTPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* relayd, relayctl */
-char *ctl_relay_test[] = { RELAYD, "-nf", REQTEMP, NULL };
struct ctl ctl_relay[] = {
{ "enable", "enable load balancing relayd daemon",
- { RELAYD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { RELAYD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable load balancing relayd daemon",
- { PKILL, table, "relayd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "relayd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit, test and stage relayd config",
- { "relay", (char *)ctl_relay_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "relay", NULL }, { RELAYD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "check-config", "test staged relayd config",
- { RELAYD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { RELAYD, "-nvf", REQTEMP, NULL }, { NULL}, NULL, 0, T_EXEC },
{ "reload", "test and apply staged relayd config",
- { RELAYCTL, "reload", NULL }, NULL, 0, T_EXEC },
+ { RELAYCTL, "reload", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "host", "per-host control",
- { RELAYCTL, "host", OPT, OPT, NULL }, NULL, 0, T_EXEC },
+ { RELAYCTL, "host", OPT, OPT, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "table", "relayd per-table control",
- { RELAYCTL, "table", OPT, OPT, NULL }, NULL, 0, T_EXEC },
+ { RELAYCTL, "table", OPT, OPT, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "redirect", "relayd per-redirect control",
- { RELAYCTL, "redirect", OPT, OPT, NULL }, NULL, 0, T_EXEC },
+ { RELAYCTL, "redirect", OPT, OPT, NULL }, { NULL }, NULL, 0,
+ T_EXEC },
{ "monitor", "enable relayd monitor mode",
- { RELAYCTL, "monitor", NULL }, NULL, 0, T_EXEC },
+ { RELAYCTL, "monitor", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "poll", "relayd poll mode",
- { RELAYCTL, "poll", NULL }, NULL, 0, T_EXEC },
+ { RELAYCTL, "poll", NULL }, { NULL}, NULL, 0, T_EXEC },
{ "show", "show hosts/redirects/relays/routers/sessions/summary",
- { RELAYCTL, "show", NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { RELAYCTL, "show", NULL }, { NULL}, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* smtpd, smptpdctl */
-char *ctl_smtp_test[] = { SMTPD, "-nf", REQTEMP, NULL };
struct ctl ctl_smtp[] = {
{ "enable", "enable OpenSMTPD daemon",
- { SMTPD, "-f", REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { SMTPD, "-f", REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable OpenSMTPD daemon",
- { PKILL, table, "smtpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "smtpd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit,test and stage OpenSMTPD config",
- { "smtp", (char *)ctl_smtp_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "smtp", NULL }, { SMTPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "config-test", "test OpenSMTPD config",
- { SMTPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { SMTPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "log", "set OpenSMTPD logging brief/verbose config",
- { SMTPCTL, "log", REQ, NULL }, NULL, 0, T_EXEC },
+ { SMTPCTL, "log", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "pause", "pause mda/mta/smtp listener",
- { SMTPCTL, "pause", REQ, NULL }, NULL, 0, T_EXEC },
+ { SMTPCTL, "pause", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "remove", "remove message or envelope",
- { SMTPCTL, "remove", REQ, NULL }, NULL, 0, T_EXEC },
+ { SMTPCTL, "remove", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "resume", "resume mda/mta/smtp listener",
- { SMTPCTL, "resume", REQ, NULL }, NULL, 0, T_EXEC },
+ { SMTPCTL, "resume", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "schedule-all", "schedule all envelopes for immediate delivery",
- { SMTPCTL, "schedule-all", NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { SMTPCTL, "schedule-all", NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* ftpproxy */
struct ctl ctl_ftpproxy[] = {
{ "enable", "enable ftp proxy daemon",
- { FTPPROXY, "-D", "2", NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { FTPPROXY, "-D", "2", NULL }, { NULL }, NULL, DB_X_ENABLE,
+ T_EXEC },
{ "disable", "disable ftp proxy daemon",
- { PKILL, table, "ftp-proxy", NULL }, NULL, DB_X_DISABLE, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { PKILL, table, "ftp-proxy", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* tftpproxy */
struct ctl ctl_tftpproxy[] = {
{ "enable", "enable TFTP proxy daemon",
- { TFTPPROXY, "-v", "-l", "127.0.0.1", NULL }, NULL, DB_X_ENABLE,
- T_EXEC },
+ { TFTPPROXY, "-v", "-l", "127.0.0.1", NULL }, { NULL }, NULL,
+ DB_X_ENABLE, T_EXEC },
{ "disable", "disable TFTP proxy daemon",
- { PKILL, table, "tftp-proxy", NULL }, NULL, DB_X_DISABLE, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { PKILL, table, "tftp-proxy", NULL }, { NULL }, NULL,
+ DB_X_DISABLE, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* tftpd */
struct ctl ctl_tftp[] = {
{ "enable", "enable TFTPd daemon",
- { TFTPD, "-l", "127.0.0.1", "/tftpboot", NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { TFTPD, "-l", "127.0.0.1", "/tftpboot", NULL }, { NULL }, NULL,
+ DB_X_ENABLE, T_EXEC },
{ "disable", "disable TFTPd daemon",
- { PKILL, table, "tftpd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { PKILL, table, "tftpd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* resolvd */
struct ctl ctl_resolv[] = {
{ "enable", "enable resolvd daemon",
- { RESOLVD, NULL }, NULL, DB_X_ENABLE_DEFAULT, T_EXEC },
+ { RESOLVD, NULL }, { NULL }, NULL, DB_X_ENABLE_DEFAULT, T_EXEC },
{ "disable", "disable resolvd daemon",
- { PKILL, "resolvd", NULL }, NULL, DB_X_DISABLE_ALWAYS, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { PKILL, "resolvd", NULL }, { NULL }, NULL, DB_X_DISABLE_ALWAYS,
+ T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* inetd */
struct ctl ctl_inet[] = {
{ "enable", "enable inetd daemon",
- { INETD, REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { INETD, REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE, T_EXEC },
{ "disable", "disable inetd daemon",
- { PKILL, table, "inetd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "inetd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit inetd superserver config",
- { "inet", NULL, NULL }, call_editor, 0, T_HANDLER_FILL1 },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { "inet", NULL, NULL }, { NULL }, call_editor, 0, T_HANDLER_FILL1 },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
/* ldapd, ldapctl */
-char *ctl_ldap_test[] = { LDAPD, "-nf", REQTEMP, NULL };
struct ctl ctl_ldap[] = {
{ "enable", "enable LDAPd daemon",
- { LDAPD, REQTEMP, NULL }, NULL, DB_X_ENABLE, T_EXEC },
+ { LDAPD, REQTEMP, NULL }, { NULL }, NULL, DB_X_ENABLE, T_EXEC },
{ "disable", "disable LDAPd daemon",
- { PKILL, table, "ldapd", NULL }, NULL, DB_X_DISABLE, T_EXEC },
+ { PKILL, table, "ldapd", NULL }, { NULL }, NULL, DB_X_DISABLE,
+ T_EXEC },
{ "edit", "edit, test and stage LDAPd config",
- { "ldap", (char *)ctl_ldap_test, NULL }, call_editor, 0,
- T_HANDLER_FILL1 },
+ { "ldap", NULL }, { LDAPD, "-nf", REQTEMP, NULL },
+ call_editor, 0, T_HANDLER_FILL1 },
{ "config-test", "test staged LDAPd config",
- { LDAPD, "-nvf", REQTEMP, NULL }, NULL, 0, T_EXEC },
+ { LDAPD, "-nvf", REQTEMP, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "log", "config LDAPd logging, brief/verbose",
- { LDAPCTL, "log", REQ, NULL }, NULL, 0, T_EXEC },
+ { LDAPCTL, "log", REQ, NULL }, { NULL }, NULL, 0, T_EXEC },
{ "compact", "compact all LDAPd databases",
- { LDAPCTL, "compact", NULL }, NULL, 0, T_EXEC },
+ { LDAPCTL, "compact", NULL }, { NULL }, NULL, 0, T_EXEC },
{ "index", "re-index all LDAPd databases",
- { LDAPCTL, "index", NULL }, NULL, 0, T_EXEC },
- { 0, 0, { 0 }, 0, 0, 0 }
+ { LDAPCTL, "index", NULL }, { NULL }, NULL, 0, T_EXEC },
+ { NULL, NULL, { NULL }, { NULL }, NULL, 0, 0 }
};
void
ctlhandler(int argc, char **argv, char *modhvar)
{
struct daemons *daemons;
- struct daemons2 *daemons2;
struct ctl *x;
- struct ctl2 *x2;
- struct daemons daemons1;
char tmpfile[PATH_MAX];
char *step_args[NOPTFILL] = { NULL, NULL, NULL, NULL, NULL, NULL };
char *tmp_args[NOPTFILL] = { NULL, NULL, NULL, NULL, NULL, NULL };
char **fillargs;
- char **xargs;
- int xtype;
- void (*xhandler)();
- int xflag_x;
- char **xtest_args = NULL;
int rv = 0;
int nargs;
- memset(&daemons1, 0, sizeof(daemons1));
-
-
/* loop daemon list to find table pointer */
daemons = (struct daemons *) genget(hname, (char **)ctl_daemons,
sizeof(struct daemons));
- if (daemons == NULL) {
- daemons2 = (struct daemons2 *) genget(hname,
- (char **)ctl_daemons2, sizeof(struct daemons2));
- if (daemons2 == NULL || Ambiguous(daemons2)) {
- printf("%% Internal error - Invalid argument %s\n", argv[1]);
- return 0;
- }
- if (daemons2todaemons(&daemons1, daemons2))
- goto done;
- daemons = &daemons1;
- } else if (Ambiguous(daemons)) {
- printf("%% Internal error - Ambiguous argument %s\n", argv[1]);
+ if (daemons == NULL || Ambiguous(daemons)) {
+ printf("%% Internal error - Invalid argument %s\n", argv[1]);
return 0;
}
goto done;
}
- if (daemons1.name != NULL) {
- x2 = (struct ctl2 *) genget(argv[1],
- (char **)daemons2->table, sizeof(struct ctl2));
- if (x2 == NULL) {
- printf("%% Invalid argument %s\n", argv[1]);
- goto done;
- } else if (Ambiguous(x2)) {
- printf("%% Ambiguous argument %s\n", argv[1]);
- goto done;
- }
- xargs = x2->args;
- xtype = x2->type;
- xhandler = x2->handler;
- xflag_x = x2->flag_x;
- xtest_args = x2->test_args;
- } else {
- x = (struct ctl *) genget(argv[1], (char **)daemons->table,
- sizeof(struct ctl));
- if (x == NULL) {
- printf("%% Invalid argument %s\n", argv[1]);
- goto done;
- } else if (Ambiguous(x)) {
- printf("%% Ambiguous argument %s\n", argv[1]);
- goto done;
- }
- xargs = x->args;
- xtype = x->type;
- xhandler = x->handler;
- xflag_x = x->flag_x;
- if (x->type == T_HANDLER_FILL1)
- xtest_args = (char **)x->args[1];
+ x = (struct ctl *) genget(argv[1], (char **)daemons->table,
+ sizeof(struct ctl));
+ if (x == NULL) {
+ printf("%% Invalid argument %s\n", argv[1]);
+ goto done;
+ } else if (Ambiguous(x)) {
+ printf("%% Ambiguous argument %s\n", argv[1]);
+ goto done;
}
- fillargs = step_optreq(xargs, step_args, argc, argv, 2);
+ fillargs = step_optreq(x->args, step_args, argc, argv, 2);
if (fillargs == NULL)
goto done;
- switch(xtype) {
+ switch(x->type) {
/* fill_tmpfile will return 0 if tmpfile or args are NULL */
case T_HANDLER:
/* pointer to handler routine, fill main args */
nargs = fill_tmpfile(fillargs, tmpfile, tmp_args);
switch (nargs) {
case 0:
- (*xhandler)();
+ (*x->handler)();
break;
case 1:
- (*xhandler)(tmp_args[0]);
+ (*x->handler)(tmp_args[0]);
break;
case 2:
- (*xhandler)(tmp_args[0], tmp_args[1]);
+ (*x->handler)(tmp_args[0], tmp_args[1]);
break;
case 3:
- (*xhandler)(tmp_args[0], tmp_args[1], tmp_args[2]);
+ (*x->handler)(tmp_args[0], tmp_args[1], tmp_args[2]);
break;
case 4:
- (*xhandler)(tmp_args[0], tmp_args[1], tmp_args[2],
+ (*x->handler)(tmp_args[0], tmp_args[1], tmp_args[2],
tmp_args[3]);
break;
case 5:
- (*xhandler)(tmp_args[0], tmp_args[1], tmp_args[2],
+ (*x->handler)(tmp_args[0], tmp_args[1], tmp_args[2],
tmp_args[3], tmp_args[4]);
break;
case 6:
- (*xhandler)(tmp_args[0], tmp_args[1], tmp_args[2],
+ (*x->handler)(tmp_args[0], tmp_args[1], tmp_args[2],
tmp_args[3], tmp_args[4], tmp_args[5]);
break;
case NOPTFILL: /* bump this when adding more cases */
break;
case T_HANDLER_FILL1:
/* pointer to handler routine, fill args @ args[1] pointer */
- if (fill_tmpfile(xtest_args, tmpfile, tmp_args))
- (*xhandler)(fillargs[0], tmp_args, fillargs[2]);
+ if (fill_tmpfile(x->test_args, tmpfile, tmp_args))
+ (*x->handler)(fillargs[0], tmp_args, fillargs[2]);
else
- (*xhandler)(fillargs[0], xtest_args, fillargs[2]);
+ (*x->handler)(fillargs[0], x->test_args, fillargs[2]);
break;
case T_EXEC:
/* command to execute via execv syscall, fill main args */
break;
}
- if (xflag_x != 0) {
- flag_x("ctl", daemons->name, xflag_x, NULL);
+ if (x->flag_x != 0) {
+ flag_x("ctl", daemons->name, x->flag_x, NULL);
}
rv = 1;
done:
- free(daemons1.table);
return rv;
}
int found = 0;
char tmpfile[64];
struct daemons *daemons;
- struct daemons2 *daemons2;
for (daemons = ctl_daemons; daemons->name != 0; daemons++) {
if (strncmp(daemons->name, name, strlen(name)) == 0) {
found = 1;
break;
}
- }
- if (found) {
- snprintf(tmpfile, sizeof(tmpfile), "%s.%d", daemons->tmpfile,
- cli_rtable);
- edit_file(tmpfile, daemons->mode, daemons->propername, args);
- return;
}
- for (daemons2 = ctl_daemons2; daemons2->name != 0; daemons2++) {
- if (strncmp(daemons2->name, name, strlen(name)) == 0) {
- found = 1;
- break;
- }
- }
if (!found) {
printf("%% call_editor internal error\n");
return;
}
- snprintf(tmpfile, sizeof(tmpfile), "%s.%d", daemons2->tmpfile,
+
+ snprintf(tmpfile, sizeof(tmpfile), "%s.%d", daemons->tmpfile,
cli_rtable);
- edit_file(tmpfile, daemons2->mode, daemons2->propername, args);
+ edit_file(tmpfile, daemons->mode, daemons->propername, args);
}
static int
blob - f62df9f976609b749de646076f8edbce4cb5af46
blob + 1d5f9ba1bb4679f08e868a87794e6443df805da9
--- ctl.h
+++ ctl.h
char *name;
char *help;
char *args[32];
- void (*handler)();
- int flag_x;
- int type;
-};
-
-struct ctl2 {
- char *name;
- char *help;
- char *args[32];
char *test_args[32];
void (*handler)();
int flag_x;
int rtablemax;
};
-struct daemons2 {
- char *name;
- char *propername;
- struct ctl2 *table;
- char *tmpfile;
- mode_t mode;
- int doreload;
- int rtablemax;
-};
-
-
/* tmp config locations */
#define PFCONF_TEMP "/var/run/pf.conf"
#define OSPFCONF_TEMP "/var/run/ospfd.conf"
/* tftpproxy test no config test yet */
extern struct daemons ctl_daemons[];
-extern struct daemons2 ctl_daemons2[];
extern struct ctl ctl_pf[];
extern struct ctl ctl_ospf[];
extern struct ctl ctl_ospf6[];
extern struct ctl ctl_dvmrp[];
extern struct ctl ctl_rad[];
extern struct ctl ctl_sasync[];
-extern struct ctl2 ctl_dhcp[];
+extern struct ctl ctl_dhcp[];
extern struct ctl ctl_snmp[];
extern struct ctl ctl_smtp[];
extern struct ctl ctl_sshd[];