diff options
Diffstat (limited to 'net/relayd/files/patch-relayd-pfe.c')
-rw-r--r-- | net/relayd/files/patch-relayd-pfe.c | 152 |
1 files changed, 107 insertions, 45 deletions
diff --git a/net/relayd/files/patch-relayd-pfe.c b/net/relayd/files/patch-relayd-pfe.c index a31e1eedbc00..2ccaccf556bd 100644 --- a/net/relayd/files/patch-relayd-pfe.c +++ b/net/relayd/files/patch-relayd-pfe.c @@ -1,47 +1,109 @@ ---- relayd/pfe.c.orig 2010-05-31 09:07:56.755288041 +0200 -+++ relayd/pfe.c 2010-05-31 09:07:52.006100566 +0200 -@@ -62,6 +62,11 @@ - case SIGTERM: - pfe_shutdown(); +--- relayd.orig/pfe.c 2011-05-22 01:06:39.464157989 +0200 ++++ relayd/pfe.c 2011-05-22 01:09:30.589288807 +0200 +@@ -17,6 +17,9 @@ + */ + + #include <sys/param.h> ++#ifdef __FreeBSD__ ++#include <sys/queue.h> ++#endif + #include <sys/stat.h> + #include <sys/socket.h> + #include <sys/un.h> +@@ -185,12 +188,14 @@ + case IMSG_CFG_VIRT: + config_getvirt(env, imsg); + break; ++#ifndef __FreeBSD__ + case IMSG_CFG_ROUTER: + config_getrt(env, imsg); + break; + case IMSG_CFG_ROUTE: + config_getroute(env, imsg); break; -+ case SIGCHLD: -+ case SIGHUP: -+ case SIGPIPE: -+ /* ignore */ -+ break; - default: - fatalx("pfe_sig_handler: unexpected signal"); ++#endif + case IMSG_CFG_PROTO: + config_getproto(env, imsg); + break; +@@ -292,8 +297,10 @@ + struct rdr *rdr; + struct host *host; + struct relay *rlay; ++#ifndef __FreeBSD__ + struct router *rt; + struct netroute *nr; ++#endif + + if (env->sc_rdrs == NULL) + goto relays; +@@ -324,7 +331,11 @@ } -@@ -74,8 +79,6 @@ - { - pid_t pid; - struct passwd *pw; -- struct event ev_sigint; -- struct event ev_sigterm; - int i; - size_t size; - -@@ -121,12 +124,17 @@ - - event_init(); - -- signal_set(&ev_sigint, SIGINT, pfe_sig_handler, NULL); -- signal_set(&ev_sigterm, SIGTERM, pfe_sig_handler, NULL); -- signal_add(&ev_sigint, NULL); -- signal_add(&ev_sigterm, NULL); -- signal(SIGPIPE, SIG_IGN); -- signal(SIGHUP, SIG_IGN); -+ signal_set(&env->sc_evsigint, SIGINT, pfe_sig_handler, env); -+ signal_set(&env->sc_evsigterm, SIGTERM, pfe_sig_handler, env); -+ signal_set(&env->sc_evsigchld, SIGCHLD, pfe_sig_handler, env); -+ signal_set(&env->sc_evsighup, SIGHUP, pfe_sig_handler, env); -+ signal_set(&env->sc_evsigpipe, SIGPIPE, pfe_sig_handler, env); -+ -+ signal_add(&env->sc_evsigint, NULL); -+ signal_add(&env->sc_evsigterm, NULL); -+ signal_add(&env->sc_evsigchld, NULL); -+ signal_add(&env->sc_evsighup, NULL); -+ signal_add(&env->sc_evsigpipe, NULL); - - /* setup pipes */ - close(pipe_pfe2hce[0]); + relays: + if (env->sc_relays == NULL) ++#ifndef __FreeBSD__ + goto routers; ++#else ++ goto end; ++#endif + TAILQ_FOREACH(rlay, env->sc_relays, rl_entry) { + rlay->rl_stats[env->sc_prefork_relay].id = EMPTY_ID; + imsg_compose_event(&c->iev, IMSG_CTL_RELAY, 0, 0, -1, +@@ -351,6 +362,7 @@ + 0, 0, -1, host, sizeof(*host)); + } + ++#ifndef __FreeBSD__ + routers: + if (env->sc_rts == NULL) + goto end; +@@ -370,6 +382,7 @@ + imsg_compose_event(&c->iev, IMSG_CTL_HOST, + 0, 0, -1, host, sizeof(*host)); + } ++#endif + + end: + imsg_compose_event(&c->iev, IMSG_CTL_END, 0, 0, -1, NULL, 0); +@@ -622,8 +635,10 @@ + struct table *table; + struct ctl_id id; + struct imsg imsg; ++#ifndef __FreeBSD__ + struct ctl_demote demote; + struct router *rt; ++#endif + + bzero(&id, sizeof(id)); + bzero(&imsg, sizeof(imsg)); +@@ -678,6 +693,7 @@ + } + } + ++#ifndef __FreeBSD__ + TAILQ_FOREACH(rt, env->sc_rts, rt_entry) { + rt->rt_conf.flags &= ~(F_BACKUP); + rt->rt_conf.flags &= ~(F_DOWN); +@@ -685,6 +701,7 @@ + if ((rt->rt_gwtable->conf.flags & F_CHANGED)) + sync_routes(env, rt); + } ++#endif + + TAILQ_FOREACH(table, env->sc_tables, entry) { + if (table->conf.check == CHECK_NOCHECK) +@@ -695,6 +712,7 @@ + */ + table->conf.flags &= ~(F_CHANGED); + ++#ifndef __FreeBSD__ + /* + * handle demotion. + */ +@@ -717,6 +735,7 @@ + sizeof(demote.group)); + proc_compose_imsg(env->sc_ps, PROC_PARENT, -1, IMSG_DEMOTE, -1, + &demote, sizeof(demote)); ++#endif + } + } + |