]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: fix md5 set on listen sockets
authorStephen Hemminger <shemminger@vyatta.com>
Tue, 25 Aug 2009 17:18:15 +0000 (10:18 -0700)
committerPaul Jakma <paul@quagga.net>
Fri, 28 Aug 2009 13:53:42 +0000 (14:53 +0100)
* bgp_network.c: (bgp_md5_set) Missing piece from earlier listener change
  did not get ported from Vyatta code into upstream.  The list
  listener_sockets changed from (int *) to (struct bgp_listener *).

bgpd/bgp_network.c

index 4cb6f7d848d787d33ca40151202138b401d85f43..9e3427d2a4ee821da36be2b42a7bef2301fdc0eb 100644 (file)
@@ -97,8 +97,8 @@ int
 bgp_md5_set (struct peer *peer)
 {
   struct listnode *node;
-  int fret = 0, ret;
-  int *socket;
+  int ret = 0;
+  struct bgp_listener *listener;
 
   if ( bgpd_privs.change (ZPRIVS_RAISE) )
     {
@@ -109,16 +109,17 @@ bgp_md5_set (struct peer *peer)
   /* Just set the password on the listen socket(s). Outbound connections
    * are taken care of in bgp_connect() below.
    */
-  for (ALL_LIST_ELEMENTS_RO(bm->listen_sockets, node, socket))
-    {
-      ret = bgp_md5_set_socket ((int)(long)socket, &peer->su, peer->password);
-      if (ret < 0)
-        fret = ret;
-    }
+  for (ALL_LIST_ELEMENTS_RO(bm->listen_sockets, node, listener))
+    if (listener->su.sa.sa_family == peer->su.sa.sa_family)
+      {
+       ret = bgp_md5_set_socket (listener->fd, &peer->su, peer->password);
+       break;
+      }
+
   if (bgpd_privs.change (ZPRIVS_LOWER) )
     zlog_err ("%s: could not lower privs", __func__);
   
-  return fret;
+  return ret;
 }
 \f
 /* Accept bgp connection. */