diff --git a/src/main/java/net/floodlightcontroller/packet/IPv4.java b/src/main/java/net/floodlightcontroller/packet/IPv4.java index e78726b83a635516ec33e72a13640791f522ed48..ccfce792b3271d2aff56aee32b816d2ea45d6277 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 c252cb6ad9a56467153691112613fda3123a6e39..928a2de68fb551f5d27aafaaba7b0e00c4d92c55 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