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