summaryrefslogtreecommitdiff
path: root/Kernel
diff options
context:
space:
mode:
authorAnotherTest <ali.mpfard@gmail.com>2020-04-04 15:48:28 +0430
committerAndreas Kling <kling@serenityos.org>2020-04-05 09:50:48 +0200
commit7d0bf9b5a9b635eb54f34843d17ea38d7c18092e (patch)
tree5ad684b601185da616ee7834942ff00dc44ea7b9 /Kernel
parent55b25b3c9b34d19ecb722d3fd3a860a45ebabb26 (diff)
downloadserenity-7d0bf9b5a9b635eb54f34843d17ea38d7c18092e.zip
Kernel+AK: Separate out MACAddress and move it into AK
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/Net/ARP.h2
-rw-r--r--Kernel/Net/EthernetFrameHeader.h2
-rw-r--r--Kernel/Net/ICMP.h2
-rw-r--r--Kernel/Net/MACAddress.h87
-rw-r--r--Kernel/Net/NetworkAdapter.h2
5 files changed, 4 insertions, 91 deletions
diff --git a/Kernel/Net/ARP.h b/Kernel/Net/ARP.h
index 37e6faa140..e467faec20 100644
--- a/Kernel/Net/ARP.h
+++ b/Kernel/Net/ARP.h
@@ -26,10 +26,10 @@
#pragma once
+#include <AK/MACAddress.h>
#include <AK/NetworkOrdered.h>
#include <Kernel/Net/EtherType.h>
#include <Kernel/Net/IPv4.h>
-#include <Kernel/Net/MACAddress.h>
namespace Kernel {
diff --git a/Kernel/Net/EthernetFrameHeader.h b/Kernel/Net/EthernetFrameHeader.h
index 7d68561f08..f73ae2a358 100644
--- a/Kernel/Net/EthernetFrameHeader.h
+++ b/Kernel/Net/EthernetFrameHeader.h
@@ -26,8 +26,8 @@
#pragma once
+#include <AK/MACAddress.h>
#include <AK/NetworkOrdered.h>
-#include <Kernel/Net/MACAddress.h>
#pragma GCC diagnostic ignored "-Warray-bounds"
diff --git a/Kernel/Net/ICMP.h b/Kernel/Net/ICMP.h
index 9ed356bfcd..bf9a2265e0 100644
--- a/Kernel/Net/ICMP.h
+++ b/Kernel/Net/ICMP.h
@@ -26,8 +26,8 @@
#pragma once
+#include <AK/MACAddress.h>
#include <Kernel/Net/IPv4.h>
-#include <Kernel/Net/MACAddress.h>
struct ICMPType {
enum {
diff --git a/Kernel/Net/MACAddress.h b/Kernel/Net/MACAddress.h
deleted file mode 100644
index 4ad391d0fa..0000000000
--- a/Kernel/Net/MACAddress.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include <AK/Assertions.h>
-#include <AK/String.h>
-#include <AK/Types.h>
-#include <LibBareMetal/StdLib.h>
-
-class [[gnu::packed]] MACAddress
-{
-public:
- MACAddress() {}
- MACAddress(const u8 data[6])
- {
- memcpy(m_data, data, 6);
- }
- MACAddress(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f)
- {
- m_data[0] = a;
- m_data[1] = b;
- m_data[2] = c;
- m_data[3] = d;
- m_data[4] = e;
- m_data[5] = f;
- }
- ~MACAddress() {}
-
- u8 operator[](int i) const
- {
- ASSERT(i >= 0 && i < 6);
- return m_data[i];
- }
-
- bool operator==(const MACAddress& other) const
- {
- return !memcmp(m_data, other.m_data, sizeof(m_data));
- }
-
- String to_string() const
- {
- return String::format("%02x:%02x:%02x:%02x:%02x:%02x", m_data[0], m_data[1], m_data[2], m_data[3], m_data[4], m_data[5]);
- }
-
- bool is_zero() const
- {
- return m_data[0] == 0 && m_data[1] == 0 && m_data[2] == 0 && m_data[3] == 0 && m_data[4] == 0 && m_data[5] == 0;
- }
-
-private:
- u8 m_data[6];
-};
-
-static_assert(sizeof(MACAddress) == 6);
-
-namespace AK {
-
-template<>
-struct Traits<MACAddress> : public GenericTraits<MACAddress> {
- static unsigned hash(const MACAddress& address) { return string_hash((const char*)&address, sizeof(address)); }
-};
-
-}
diff --git a/Kernel/Net/NetworkAdapter.h b/Kernel/Net/NetworkAdapter.h
index b7cea4f5ed..59f6767da0 100644
--- a/Kernel/Net/NetworkAdapter.h
+++ b/Kernel/Net/NetworkAdapter.h
@@ -28,6 +28,7 @@
#include <AK/ByteBuffer.h>
#include <AK/Function.h>
+#include <AK/MACAddress.h>
#include <AK/SinglyLinkedList.h>
#include <AK/Types.h>
#include <AK/WeakPtr.h>
@@ -36,7 +37,6 @@
#include <Kernel/Net/ARP.h>
#include <Kernel/Net/ICMP.h>
#include <Kernel/Net/IPv4.h>
-#include <Kernel/Net/MACAddress.h>
namespace Kernel {