retnetlink: Add rtnetlink_destroy function.
authorEthan Jackson <ethan@nicira.com>
Thu, 13 Jan 2011 19:54:33 +0000 (11:54 -0800)
committerEthan Jackson <ethan@nicira.com>
Thu, 13 Jan 2011 21:20:12 +0000 (13:20 -0800)
This commit adds a function to rtnetlink which may be used to
destroy struct rtnetlink handles.  This function will be used in a
future commit.

lib/rtnetlink.c
lib/rtnetlink.h

index 5d80d72..cc175b4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010 Nicira Networks.
+ * Copyright (c) 2009, 2010, 2011 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@
 
 #include <errno.h>
 #include <poll.h>
+#include <stdlib.h>
 
 #include "coverage.h"
 #include "netlink.h"
@@ -63,6 +64,17 @@ rtnetlink_create(int multicast_group, rtnetlink_parse_func *parse,
     return rtn;
 }
 
+/* Destroys 'rtn' by freeing any memory it has reserved and closing any sockets
+ * it has opened. */
+void
+rtnetlink_destroy(struct rtnetlink *rtn)
+{
+    if (rtn) {
+        nl_sock_destroy(rtn->notify_sock);
+        free(rtn);
+    }
+}
+
 /* Registers 'cb' to be called with auxiliary data 'aux' with change
  * notifications.  The notifier is stored in 'notifier', which the caller must
  * not modify or free.
index 3d4b51e..8d6f2bb 100644 (file)
@@ -48,6 +48,7 @@ struct rtnetlink_notifier {
 struct rtnetlink *rtnetlink_create(int multicast_group,
                                    rtnetlink_parse_func *,
                                    void *change);
+void rtnetlink_destroy(struct rtnetlink *rtn);
 int rtnetlink_notifier_register(struct rtnetlink *,
                                 struct rtnetlink_notifier *,
                                 rtnetlink_notify_func *, void *aux);