socket-util: New function guess_netmask().
authorBen Pfaff <blp@nicira.com>
Thu, 5 Mar 2009 20:26:22 +0000 (12:26 -0800)
committerBen Pfaff <blp@nicira.com>
Thu, 5 Mar 2009 20:26:22 +0000 (12:26 -0800)
lib/socket-util.c
lib/socket-util.h

index d8ae179b357741e99e55d607df0de8af37458e8e..d0ff05668fb9aee3eaf4c241a6669c0cae8b3c94 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008 The Board of Trustees of The Leland Stanford
+/* Copyright (c) 2008, 2009 The Board of Trustees of The Leland Stanford
  * Junior University
  * 
  * We are making the OpenFlow specification and associated documentation
@@ -305,3 +305,13 @@ get_unix_name_len(socklen_t sun_len)
             ? sun_len - offsetof(struct sockaddr_un, sun_path)
             : 0);
 }
+
+uint32_t
+guess_netmask(uint32_t ip)
+{
+    ip = ntohl(ip);
+    return ((ip >> 31) == 0 ? htonl(0xff000000)   /* Class A */
+            : (ip >> 30) == 2 ? htonl(0xffff0000) /* Class B */
+            : (ip >> 29) == 6 ? htonl(0xffffff00) /* Class C */
+            : htonl(0));                          /* ??? */
+}
index 3816c3c4b4053ae0517e43c19ec2f765c06599ad..fd38a494c55d083e452e17f3c72e5d80c9c139ec 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008 The Board of Trustees of The Leland Stanford
+/* Copyright (c) 2008, 2009 The Board of Trustees of The Leland Stanford
  * Junior University
  * 
  * We are making the OpenFlow specification and associated documentation
@@ -48,5 +48,6 @@ void drain_fd(int fd, size_t n_packets);
 int make_unix_socket(int style, bool nonblock, bool passcred,
                      const char *bind_path, const char *connect_path);
 int get_unix_name_len(socklen_t sun_len);
+uint32_t guess_netmask(uint32_t ip);
 
 #endif /* socket-util.h */