summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhenning <henning@openbsd.org>2004-01-28 18:24:25 +0000
committerhenning <henning@openbsd.org>2004-01-28 18:24:25 +0000
commit5e15b1725effbe4fb688296ca95bf38d8cbe0e2f (patch)
treef384f4a71f6df1732fd80af962f16c3fd4059cef
parentimprove logging (diff)
downloadwireguard-openbsd-5e15b1725effbe4fb688296ca95bf38d8cbe0e2f.tar.xz
wireguard-openbsd-5e15b1725effbe4fb688296ca95bf38d8cbe0e2f.zip
repair the bind() in session_connect; only used if local-addr was specified
got broken in the sockaddr_in -> bgpd_addr conversion
-rw-r--r--usr.sbin/bgpd/session.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/usr.sbin/bgpd/session.c b/usr.sbin/bgpd/session.c
index 8ecf10aed3c..09525f8174d 100644
--- a/usr.sbin/bgpd/session.c
+++ b/usr.sbin/bgpd/session.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: session.c,v 1.98 2004/01/28 18:19:32 henning Exp $ */
+/* $OpenBSD: session.c,v 1.99 2004/01/28 18:24:25 henning Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -755,13 +755,14 @@ session_connect(struct peer *peer)
peer->wbuf.sock = peer->sock;
/* if update source is set we need to bind() */
- if (peer->conf.local_addr.af)
- if (bind(peer->sock, addr2sa(&peer->conf.local_addr, 0),
- sizeof(peer->conf.local_addr))) {
+ if (peer->conf.local_addr.af) {
+ sa = addr2sa(&peer->conf.local_addr, 0);
+ if (bind(peer->sock, sa, sa->sa_len) == -1) {
log_peer_warn(&peer->conf, "session_connect bind");
bgp_fsm(peer, EVNT_CON_OPENFAIL);
return (-1);
}
+ }
if (session_setup_socket(peer)) {
bgp_fsm(peer, EVNT_CON_OPENFAIL);