diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 962c528948..871467343c 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -160,10 +160,32 @@ peer_xfer_conn(struct peer *from_peer) from_peer->last_event = last_evt; from_peer->last_major_event = last_maj_evt; peer->remote_id = from_peer->remote_id; + if (from_peer->hostname != NULL) - peer->hostname = XSTRDUP(MTYPE_HOST, from_peer->hostname); + { + if (peer->hostname) + { + XFREE(MTYPE_HOST, peer->hostname); + peer->hostname = NULL; + } + + peer->hostname = XSTRDUP(MTYPE_HOST, from_peer->hostname); + XFREE(MTYPE_HOST, from_peer->hostname); + from_peer->hostname = NULL; + } + if (from_peer->domainname != NULL) - peer->domainname = XSTRDUP(MTYPE_HOST, from_peer->domainname); + { + if (peer->domainname) + { + XFREE(MTYPE_HOST, peer->domainname); + peer->domainname= NULL; + } + + peer->domainname = XSTRDUP(MTYPE_HOST, from_peer->domainname); + XFREE(MTYPE_HOST, from_peer->domainname); + from_peer->domainname = NULL; + } for (afi = AFI_IP; afi < AFI_MAX; afi++) for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++) diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c index 4ddc53606d..0adde3f894 100644 --- a/bgpd/bgp_open.c +++ b/bgpd/bgp_open.c @@ -627,7 +627,10 @@ bgp_capability_hostname (struct peer *peer, struct capability_header *hdr) str[len] = '\0'; if (peer->hostname != NULL) - XFREE(MTYPE_HOST, peer->hostname); + { + XFREE(MTYPE_HOST, peer->hostname); + peer->hostname = NULL; + } if (peer->domainname != NULL) { diff --git a/tools/quagga b/tools/quagga index 033db66e3f..a97032424e 100755 --- a/tools/quagga +++ b/tools/quagga @@ -4,18 +4,18 @@ startup() { FILE="/var/run/quagga/$1.was_running" - /bin/systemctl reset-failed $1 + /bin/systemctl reset-failed $1 > /dev/null 2>&1 if [ -e $FILE ] then rm $FILE - systemctl start $1 + /bin/systemctl start $1 > /dev/null 2>&1 fi /bin/systemctl is-enabled $1 > /dev/null 2>&1 if [ $? -eq 0 ] then - systemctl start $1 + /bin/systemctl start $1 > /dev/null 2>&1 fi } @@ -41,14 +41,14 @@ start_daemons() stop_ospfd_multiinstance() { for instance in $MI; do - /bin/systemctl stop ospfd@$instance + /bin/systemctl stop ospfd@$instance > /dev/null 2>&1 done } stop_daemons() { stop_ospfd_multiinstance - /bin/systemctl stop bgpd ospfd ospf6d ripd ripngd isisd zebra + /bin/systemctl stop bgpd ospfd ospf6d ripd ripngd isisd zebra > /dev/null 2>&1 } MI=`systemctl list-units 'ospfd@*'| sed -n -e '/@/s/\..*//' -e 's/.*@//p'`