summaryrefslogtreecommitdiff
path: root/common/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkRouteMessageTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'common/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkRouteMessageTest.java')
-rw-r--r--common/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkRouteMessageTest.java229
1 files changed, 0 insertions, 229 deletions
diff --git a/common/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkRouteMessageTest.java b/common/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkRouteMessageTest.java
deleted file mode 100644
index 9881653a..00000000
--- a/common/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkRouteMessageTest.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.net.module.util.netlink;
-
-import static android.system.OsConstants.NETLINK_ROUTE;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import android.net.InetAddresses;
-import android.net.IpPrefix;
-import android.system.OsConstants;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.net.module.util.HexDump;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.Inet6Address;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class RtNetlinkRouteMessageTest {
- private static final IpPrefix TEST_IPV6_GLOBAL_PREFIX = new IpPrefix("2001:db8:1::/64");
- private static final Inet6Address TEST_IPV6_LINK_LOCAL_GATEWAY =
- (Inet6Address) InetAddresses.parseNumericAddress("fe80::1");
-
- // An example of the full RTM_NEWROUTE message.
- private static final String RTM_NEWROUTE_HEX =
- "88000000180000060000000000000000" // struct nlmsghr
- + "0A400000FC02000100000000" // struct rtmsg
- + "08000F00C7060000" // RTA_TABLE
- + "1400010020010DB8000100000000000000000000" // RTA_DST
- + "08000400DF020000" // RTA_OIF
- + "0800060000010000" // RTA_PRIORITY
- + "24000C0000000000000000005EEA000000000000" // RTA_CACHEINFO
- + "00000000000000000000000000000000"
- + "14000500FE800000000000000000000000000001" // RTA_GATEWAY
- + "0500140000000000"; // RTA_PREF
-
- private ByteBuffer toByteBuffer(final String hexString) {
- return ByteBuffer.wrap(HexDump.hexStringToByteArray(hexString));
- }
-
- private void assertRtmRouteMessage(final RtNetlinkRouteMessage routeMsg) {
- final StructNlMsgHdr hdr = routeMsg.getHeader();
- assertNotNull(hdr);
- assertEquals(136, hdr.nlmsg_len);
- assertEquals(NetlinkConstants.RTM_NEWROUTE, hdr.nlmsg_type);
- assertEquals(0x600, hdr.nlmsg_flags);
- assertEquals(0, hdr.nlmsg_seq);
- assertEquals(0, hdr.nlmsg_pid);
-
- final StructRtMsg rtmsg = routeMsg.getRtMsgHeader();
- assertNotNull(rtmsg);
- assertEquals((byte) OsConstants.AF_INET6, rtmsg.family);
- assertEquals(64, rtmsg.dstLen);
- assertEquals(0, rtmsg.srcLen);
- assertEquals(0, rtmsg.tos);
- assertEquals(0xFC, rtmsg.table);
- assertEquals(NetlinkConstants.RTPROT_KERNEL, rtmsg.protocol);
- assertEquals(NetlinkConstants.RT_SCOPE_UNIVERSE, rtmsg.scope);
- assertEquals(NetlinkConstants.RTN_UNICAST, rtmsg.type);
- assertEquals(0, rtmsg.flags);
-
- assertEquals(routeMsg.getDestination(), TEST_IPV6_GLOBAL_PREFIX);
- assertEquals(735, routeMsg.getInterfaceIndex());
- assertEquals((Inet6Address) routeMsg.getGateway(), TEST_IPV6_LINK_LOCAL_GATEWAY);
-
- assertNotNull(routeMsg.getRtaCacheInfo());
- }
-
- @Test
- public void testParseRtmRouteMessage() {
- final ByteBuffer byteBuffer = toByteBuffer(RTM_NEWROUTE_HEX);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
-
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
- assertNotNull(msg);
- assertTrue(msg instanceof RtNetlinkRouteMessage);
- final RtNetlinkRouteMessage routeMsg = (RtNetlinkRouteMessage) msg;
- assertRtmRouteMessage(routeMsg);
- }
-
- private static final String RTM_NEWROUTE_PACK_HEX =
- "4C000000180000060000000000000000" // struct nlmsghr
- + "0A400000FC02000100000000" // struct rtmsg
- + "1400010020010DB8000100000000000000000000" // RTA_DST
- + "14000500FE800000000000000000000000000001" // RTA_GATEWAY
- + "08000400DF020000" // RTA_OIF
- + "24000C0000000000000000005EEA000000000000" // RTA_CACHEINFO
- + "00000000000000000000000000000000";
-
- @Test
- public void testPackRtmNewRoute() {
- final ByteBuffer byteBuffer = toByteBuffer(RTM_NEWROUTE_PACK_HEX);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
- assertNotNull(msg);
- assertTrue(msg instanceof RtNetlinkRouteMessage);
- final RtNetlinkRouteMessage routeMsg = (RtNetlinkRouteMessage) msg;
-
- final ByteBuffer packBuffer = ByteBuffer.allocate(112);
- packBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- routeMsg.pack(packBuffer);
- assertEquals(RTM_NEWROUTE_PACK_HEX, HexDump.toHexString(packBuffer.array()));
- }
-
- private static final String RTM_NEWROUTE_TRUNCATED_HEX =
- "48000000180000060000000000000000" // struct nlmsghr
- + "0A400000FC02000100000000" // struct rtmsg
- + "1400010020010DB8000100000000000000000000" // RTA_DST
- + "10000500FE8000000000000000000000" // RTA_GATEWAY(truncated)
- + "08000400DF020000"; // RTA_OIF
-
- @Test
- public void testTruncatedRtmNewRoute() {
- final ByteBuffer byteBuffer = toByteBuffer(RTM_NEWROUTE_TRUNCATED_HEX);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
- // Parsing RTM_NEWROUTE with truncated RTA_GATEWAY attribute returns null.
- assertNull(msg);
- }
-
- private static final String RTM_NEWROUTE_IPV4_MAPPED_IPV6_GATEWAY_HEX =
- "4C000000180000060000000000000000" // struct nlmsghr
- + "0A400000FC02000100000000" // struct rtmsg
- + "1400010020010DB8000100000000000000000000" // RTA_DST(2001:db8:1::/64)
- + "1400050000000000000000000000FFFF0A010203" // RTA_GATEWAY(::ffff:10.1.2.3)
- + "08000400DF020000"; // RTA_OIF
-
- @Test
- public void testParseRtmRouteMessage_IPv4MappedIPv6Gateway() {
- final ByteBuffer byteBuffer = toByteBuffer(RTM_NEWROUTE_IPV4_MAPPED_IPV6_GATEWAY_HEX);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
- // Parsing RTM_NEWROUTE with IPv4-mapped IPv6 gateway address, which doesn't match
- // rtm_family after address parsing.
- assertNull(msg);
- }
-
- private static final String RTM_NEWROUTE_IPV4_MAPPED_IPV6_DST_HEX =
- "4C000000180000060000000000000000" // struct nlmsghr
- + "0A780000FC02000100000000" // struct rtmsg
- + "1400010000000000000000000000FFFF0A000000" // RTA_DST(::ffff:10.0.0.0/120)
- + "14000500FE800000000000000000000000000001" // RTA_GATEWAY(fe80::1)
- + "08000400DF020000"; // RTA_OIF
-
- @Test
- public void testParseRtmRouteMessage_IPv4MappedIPv6Destination() {
- final ByteBuffer byteBuffer = toByteBuffer(RTM_NEWROUTE_IPV4_MAPPED_IPV6_DST_HEX);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
- // Parsing RTM_NEWROUTE with IPv4-mapped IPv6 destination prefix, which doesn't match
- // rtm_family after address parsing.
- assertNull(msg);
- }
-
- // An example of the full RTM_NEWADDR message.
- private static final String RTM_NEWADDR_HEX =
- "48000000140000000000000000000000" // struct nlmsghr
- + "0A4080FD1E000000" // struct ifaddrmsg
- + "14000100FE800000000000002C415CFFFE096665" // IFA_ADDRESS
- + "14000600100E0000201C00002A70000045700000" // IFA_CACHEINFO
- + "0800080080000000"; // IFA_FLAGS
-
- @Test
- public void testParseMultipleRtmMessagesInOneByteBuffer() {
- final ByteBuffer byteBuffer = toByteBuffer(RTM_NEWROUTE_HEX + RTM_NEWADDR_HEX);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
-
- // Try to parse the RTM_NEWROUTE message.
- NetlinkMessage msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
- assertNotNull(msg);
- assertTrue(msg instanceof RtNetlinkRouteMessage);
- final RtNetlinkRouteMessage routeMsg = (RtNetlinkRouteMessage) msg;
- assertRtmRouteMessage(routeMsg);
-
- // Try to parse the RTM_NEWADDR message.
- msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
- assertNotNull(msg);
- assertTrue(msg instanceof RtNetlinkAddressMessage);
- }
-
- @Test
- public void testToString() {
- final ByteBuffer byteBuffer = toByteBuffer(RTM_NEWROUTE_HEX);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer, NETLINK_ROUTE);
- assertNotNull(msg);
- assertTrue(msg instanceof RtNetlinkRouteMessage);
- final RtNetlinkRouteMessage routeMsg = (RtNetlinkRouteMessage) msg;
- final String expected = "RtNetlinkRouteMessage{ "
- + "nlmsghdr{"
- + "StructNlMsgHdr{ nlmsg_len{136}, nlmsg_type{24(RTM_NEWROUTE)}, "
- + "nlmsg_flags{1536(NLM_F_MATCH)}, nlmsg_seq{0}, nlmsg_pid{0} }}, "
- + "Rtmsg{"
- + "family: 10, dstLen: 64, srcLen: 0, tos: 0, table: 252, protocol: 2, "
- + "scope: 0, type: 1, flags: 0}, "
- + "destination{2001:db8:1::}, "
- + "gateway{fe80::1}, "
- + "ifindex{735}, "
- + "rta_cacheinfo{clntref: 0, lastuse: 0, expires: 59998, error: 0, used: 0, "
- + "id: 0, ts: 0, tsage: 0} "
- + "}";
- assertEquals(expected, routeMsg.toString());
- }
-}