diff options
Diffstat (limited to 'common/testutils/devicetests/com/android/testutils/NetlinkTestUtils.kt')
-rw-r--r-- | common/testutils/devicetests/com/android/testutils/NetlinkTestUtils.kt | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/common/testutils/devicetests/com/android/testutils/NetlinkTestUtils.kt b/common/testutils/devicetests/com/android/testutils/NetlinkTestUtils.kt deleted file mode 100644 index 3f5460bf..00000000 --- a/common/testutils/devicetests/com/android/testutils/NetlinkTestUtils.kt +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (C) 2020 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. - */ - -@file:JvmName("NetlinkTestUtils") - -package com.android.testutils - -import com.android.net.module.util.netlink.NetlinkConstants.RTM_DELNEIGH -import com.android.net.module.util.netlink.NetlinkConstants.RTM_NEWNEIGH -import libcore.util.HexEncoding -import libcore.util.HexEncoding.encodeToString -import java.net.Inet6Address -import java.net.InetAddress - -private const val VRRP_MAC_ADDR = "00005e000164" - -/** - * Make a RTM_NEWNEIGH netlink message. - */ -@JvmOverloads -fun makeNewNeighMessage( - neighAddr: InetAddress, - nudState: Short, - linkLayerAddr: String = VRRP_MAC_ADDR -) = makeNeighborMessage( - neighAddr = neighAddr, - type = RTM_NEWNEIGH, - nudState = nudState, - linkLayerAddr = linkLayerAddr -) - -/** - * Make a RTM_DELNEIGH netlink message. - */ -fun makeDelNeighMessage( - neighAddr: InetAddress, - nudState: Short -) = makeNeighborMessage( - neighAddr = neighAddr, - type = RTM_DELNEIGH, - nudState = nudState -) - -private fun makeNeighborMessage( - neighAddr: InetAddress, - type: Short, - nudState: Short, - linkLayerAddr: String = VRRP_MAC_ADDR -) = HexEncoding.decode( - /* ktlint-disable indent */ - // -- struct nlmsghdr -- - // length = 88 or 76: - (if (neighAddr is Inet6Address) "58000000" else "4c000000") + - type.toLEHex() + // type - "0000" + // flags - "00000000" + // seqno - "00000000" + // pid (0 == kernel) - // struct ndmsg - // family (AF_INET6 or AF_INET) - (if (neighAddr is Inet6Address) "0a" else "02") + - "00" + // pad1 - "0000" + // pad2 - "15000000" + // interface index (21 == wlan0, on test device) - nudState.toLEHex() + // NUD state - "00" + // flags - "01" + // type - // -- struct nlattr: NDA_DST -- - // length = 20 or 8: - (if (neighAddr is Inet6Address) "1400" else "0800") + - "0100" + // type (1 == NDA_DST, for neighbor messages) - // IP address: - encodeToString(neighAddr.address) + - // -- struct nlattr: NDA_LLADDR -- - "0a00" + // length = 10 - "0200" + // type (2 == NDA_LLADDR, for neighbor messages) - linkLayerAddr + // MAC Address(default == 00:00:5e:00:01:64) - "0000" + // padding, for 4 byte alignment - // -- struct nlattr: NDA_PROBES -- - "0800" + // length = 8 - "0400" + // type (4 == NDA_PROBES, for neighbor messages) - "01000000" + // number of probes - // -- struct nlattr: NDA_CACHEINFO -- - "1400" + // length = 20 - "0300" + // type (3 == NDA_CACHEINFO, for neighbor messages) - "05190000" + // ndm_used, as "clock ticks ago" - "05190000" + // ndm_confirmed, as "clock ticks ago" - "190d0000" + // ndm_updated, as "clock ticks ago" - "00000000", // ndm_refcnt - false /* allowSingleChar */) - /* ktlint-enable indent */ - -/** - * Convert a [Short] to a little-endian hex string. - */ -private fun Short.toLEHex() = String.format("%04x", java.lang.Short.reverseBytes(this)) |