From 76671f15aa6eb52a707abce06408b7440f2f62cf Mon Sep 17 00:00:00 2001
From: Alex Reimers <alex@bigswitch.com>
Date: Tue, 10 Jul 2012 16:09:18 -0700
Subject: [PATCH] IPv4.java - Add static method for IPv4 from int to byte[].

---
 .../net/floodlightcontroller/packet/IPv4.java | 20 ++++++++++++++++---
 .../floodlightcontroller/packet/IPv4Test.java |  9 +++++++--
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/src/main/java/net/floodlightcontroller/packet/IPv4.java b/src/main/java/net/floodlightcontroller/packet/IPv4.java
index e78726b83..ccfce792b 100644
--- a/src/main/java/net/floodlightcontroller/packet/IPv4.java
+++ b/src/main/java/net/floodlightcontroller/packet/IPv4.java
@@ -456,9 +456,9 @@ public class IPv4 extends BasePacket {
 
     /**
      * Accepts an IPv4 address of the form xxx.xxx.xxx.xxx, ie 192.168.0.1 and
-     * returns the corresponding byte array
-     * @param ipAddress
-     * @return
+     * returns the corresponding byte array.
+     * @param ipAddress The IP address in the form xx.xxx.xxx.xxx.
+     * @return The IP address separated into bytes
      */
     public static byte[] toIPv4AddressBytes(String ipAddress) {
         String[] octets = ipAddress.split("\\.");
@@ -472,6 +472,20 @@ public class IPv4 extends BasePacket {
         }
         return result;
     }
+    
+    /**
+     * Accepts an IPv4 address in the form of an integer and
+     * returns the corresponding byte array.
+     * @param ipAddress The IP address as an integer.
+     * @return The IP address separated into bytes.
+     */
+    public static byte[] toIPv4AddressBytes(int ipAddress) {
+    	return new byte[] {
+                (byte)(ipAddress >>> 24),
+                (byte)(ipAddress >>> 16),
+                (byte)(ipAddress >>> 8),
+                (byte)ipAddress};
+    }
 
     /* (non-Javadoc)
      * @see java.lang.Object#hashCode()
diff --git a/src/test/java/net/floodlightcontroller/packet/IPv4Test.java b/src/test/java/net/floodlightcontroller/packet/IPv4Test.java
index c252cb6ad..928a2de68 100644
--- a/src/test/java/net/floodlightcontroller/packet/IPv4Test.java
+++ b/src/test/java/net/floodlightcontroller/packet/IPv4Test.java
@@ -35,8 +35,13 @@ import org.junit.Test;
 public class IPv4Test {
     @Test
     public void testToIPv4Address() {
-        int expected = 0xc0a80001;
-        assertEquals(expected, IPv4.toIPv4Address("192.168.0.1"));
+        int intIp = 0xc0a80001;
+        String stringIp = "192.168.0.1";
+        byte[] byteIp = new byte[] {(byte)192, (byte)168, (byte)0, (byte)1};
+        assertEquals(intIp, IPv4.toIPv4Address(stringIp));
+        assertEquals(intIp, IPv4.toIPv4Address(byteIp));
+        assertTrue(Arrays.equals(byteIp, IPv4.toIPv4AddressBytes(intIp)));
+        assertTrue(Arrays.equals(byteIp, IPv4.toIPv4AddressBytes(stringIp)));
     }
 
     @Test
-- 
GitLab