summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenning Brauer <henning@cvs.openbsd.org>2004-07-04 03:51:32 +0000
committerHenning Brauer <henning@cvs.openbsd.org>2004-07-04 03:51:32 +0000
commit19dc9d31e9066fe484f3eeae0f4930c1f480e1c8 (patch)
tree9edd1679244ee8f25d85ff6eca3161773559a306
parent8a66a965f7ea065f86f9f74241ba8cb602a8fde6 (diff)
2 more file descriptors for each RDE and SE inherited from the parent
we should close
-rw-r--r--usr.sbin/bgpd/bgpd.c7
-rw-r--r--usr.sbin/bgpd/rde.c6
-rw-r--r--usr.sbin/bgpd/session.c6
-rw-r--r--usr.sbin/bgpd/session.h6
4 files changed, 15 insertions, 10 deletions
diff --git a/usr.sbin/bgpd/bgpd.c b/usr.sbin/bgpd/bgpd.c
index 92da4dee163..487096bcdc1 100644
--- a/usr.sbin/bgpd/bgpd.c
+++ b/usr.sbin/bgpd/bgpd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: bgpd.c,v 1.99 2004/07/04 03:37:03 henning Exp $ */
+/* $OpenBSD: bgpd.c,v 1.100 2004/07/04 03:51:31 henning Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -195,9 +195,10 @@ main(int argc, char *argv[])
prepare_listeners(&conf);
/* fork children */
- rde_pid = rde_main(&conf, &net_l, rules_l, &mrt_l, pipe_m2r, pipe_s2r);
+ rde_pid = rde_main(&conf, &net_l, rules_l, &mrt_l, pipe_m2r, pipe_s2r,
+ pipe_m2s);
io_pid = session_main(&conf, peer_l, &net_l, rules_l, &mrt_l,
- pipe_m2s, pipe_s2r);
+ pipe_m2s, pipe_s2r, pipe_m2r);
setproctitle("parent");
diff --git a/usr.sbin/bgpd/rde.c b/usr.sbin/bgpd/rde.c
index 9eaa4e613ad..fa3d902bd76 100644
--- a/usr.sbin/bgpd/rde.c
+++ b/usr.sbin/bgpd/rde.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde.c,v 1.123 2004/07/04 03:37:03 henning Exp $ */
+/* $OpenBSD: rde.c,v 1.124 2004/07/04 03:51:31 henning Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -105,7 +105,7 @@ u_int32_t nexthophashsize = 64;
int
rde_main(struct bgpd_config *config, struct network_head *net_l,
struct filter_head *rules, struct mrt_head *mrt_l,
- int pipe_m2r[2], int pipe_s2r[2])
+ int pipe_m2r[2], int pipe_s2r[2], int pipe_m2s[2])
{
pid_t pid;
struct passwd *pw;
@@ -148,6 +148,8 @@ rde_main(struct bgpd_config *config, struct network_head *net_l,
close(pipe_s2r[0]);
close(pipe_m2r[0]);
+ close(pipe_m2s[0]);
+ close(pipe_m2s[1]);
/* initialize the RIB structures */
imsg_init(&ibuf_se, pipe_s2r[1]);
diff --git a/usr.sbin/bgpd/session.c b/usr.sbin/bgpd/session.c
index 91fa899164b..83b8b7c28a3 100644
--- a/usr.sbin/bgpd/session.c
+++ b/usr.sbin/bgpd/session.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: session.c,v 1.181 2004/07/03 17:19:59 claudio Exp $ */
+/* $OpenBSD: session.c,v 1.182 2004/07/04 03:51:31 henning Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -158,7 +158,7 @@ setup_listeners(u_int *la_cnt)
int
session_main(struct bgpd_config *config, struct peer *cpeers,
struct network_head *net_l, struct filter_head *rules,
- struct mrt_head *m_l, int pipe_m2s[2], int pipe_s2r[2])
+ struct mrt_head *m_l, int pipe_m2s[2], int pipe_s2r[2], int pipe_m2r[2])
{
int nfds, i, j, timeout;
int idx_peers, idx_listeners, idx_mrts;
@@ -224,6 +224,8 @@ session_main(struct bgpd_config *config, struct peer *cpeers,
log_info("session engine ready");
close(pipe_m2s[0]);
close(pipe_s2r[1]);
+ close(pipe_m2r[0]);
+ close(pipe_m2r[1]);
init_conf(conf);
imsg_init(&ibuf_rde, pipe_s2r[0]);
imsg_init(&ibuf_main, pipe_m2s[1]);
diff --git a/usr.sbin/bgpd/session.h b/usr.sbin/bgpd/session.h
index c11240cb76c..a7e961cb28b 100644
--- a/usr.sbin/bgpd/session.h
+++ b/usr.sbin/bgpd/session.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: session.h,v 1.57 2004/06/20 18:35:12 henning Exp $ */
+/* $OpenBSD: session.h,v 1.58 2004/07/04 03:51:31 henning Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -189,7 +189,7 @@ struct peer *peers;
void session_socket_blockmode(int, enum blockmodes);
int session_main(struct bgpd_config *, struct peer *,
struct network_head *, struct filter_head *,
- struct mrt_head *, int[2], int[2]);
+ struct mrt_head *, int[2], int[2], int[2]);
void bgp_fsm(struct peer *, enum session_events);
struct peer *getpeerbyaddr(struct bgpd_addr *);
int imsg_compose_parent(int, pid_t, void *, u_int16_t);
@@ -214,7 +214,7 @@ void prepare_listeners(struct bgpd_config *);
/* rde.c */
int rde_main(struct bgpd_config *, struct network_head *,
- struct filter_head *, struct mrt_head *, int[2], int[2]);
+ struct filter_head *, struct mrt_head *, int[2], int[2], int[2]);
/* control.c */
int control_listen(void);