Commit f83ce94d authored by Ondrej Zajicek's avatar Ondrej Zajicek
Browse files

Fixes missing unregister of kernel table handling code.

And some minor fixes.

Thanks to Sergey Popovich for the patch.
parent f515e229
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -231,7 +231,7 @@ neigh_up(neighbor *n, struct iface *i, int scope)
static void
neigh_down(neighbor *n)
{
  DBG("Flushing neighbor %I on %s\n", n->addr, i->name);
  DBG("Flushing neighbor %I on %s\n", n->addr, n->iface->name);
  rem_node(&n->if_n);
  if (! (n->flags & NEF_BIND))
    n->iface = NULL;
+6 −6
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
 */

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/uio.h>
@@ -1040,11 +1041,9 @@ nl_open_async(void)
  sock *sk;
  struct sockaddr_nl sa;
  int fd;
  static int nl_open_tried = 0;

  if (nl_open_tried)
  if (nl_async_sk)
    return;
  nl_open_tried = 1;

  DBG("KRT: Opening async netlink socket\n");

@@ -1065,18 +1064,18 @@ nl_open_async(void)
  if (bind(fd, (struct sockaddr *) &sa, sizeof(sa)) < 0)
    {
      log(L_ERR "Unable to bind asynchronous rtnetlink socket: %m");
      close(fd);
      return;
    }

  nl_async_rx_buffer = xmalloc(NL_RX_SIZE);

  sk = nl_async_sk = sk_new(krt_pool);
  sk->type = SK_MAGIC;
  sk->rx_hook = nl_async_hook;
  sk->fd = fd;
  if (sk_open(sk))
    bug("Netlink: sk_open failed");

  if (!nl_async_rx_buffer)
    nl_async_rx_buffer = xmalloc(NL_RX_SIZE);
}

/*
@@ -1097,6 +1096,7 @@ krt_sys_start(struct krt_proto *p)
void
krt_sys_shutdown(struct krt_proto *p UNUSED)
{
  nl_table_map[KRT_CF->sys.table_id] = NULL;
}

int