Forráskód Böngészése

Kernel: Generalize the UpdateArp table to UpdateTable

We can use the same enum cases to apply to updates on different
networking tables within the Kernel (i.e. a routing table)
brapru 3 éve
szülő
commit
0718b20df0

+ 2 - 2
Kernel/Net/IPv4Socket.cpp

@@ -653,7 +653,7 @@ ErrorOr<void> IPv4Socket::ioctl(OpenFileDescription&, unsigned request, Userspac
                 return EPERM;
             if (arp_req.arp_pa.sa_family != AF_INET)
                 return EAFNOSUPPORT;
-            update_arp_table(IPv4Address(((sockaddr_in&)arp_req.arp_pa).sin_addr.s_addr), *(MACAddress*)&arp_req.arp_ha.sa_data[0], UpdateArp::Set);
+            update_arp_table(IPv4Address(((sockaddr_in&)arp_req.arp_pa).sin_addr.s_addr), *(MACAddress*)&arp_req.arp_ha.sa_data[0], UpdateTable::Set);
             return {};
 
         case SIOCDARP:
@@ -661,7 +661,7 @@ ErrorOr<void> IPv4Socket::ioctl(OpenFileDescription&, unsigned request, Userspac
                 return EPERM;
             if (arp_req.arp_pa.sa_family != AF_INET)
                 return EAFNOSUPPORT;
-            update_arp_table(IPv4Address(((sockaddr_in&)arp_req.arp_pa).sin_addr.s_addr), *(MACAddress*)&arp_req.arp_ha.sa_data[0], UpdateArp::Delete);
+            update_arp_table(IPv4Address(((sockaddr_in&)arp_req.arp_pa).sin_addr.s_addr), *(MACAddress*)&arp_req.arp_ha.sa_data[0], UpdateTable::Delete);
             return {};
         }
 

+ 2 - 2
Kernel/Net/NetworkTask.cpp

@@ -158,7 +158,7 @@ void handle_arp(EthernetFrameHeader const& eth, size_t frame_size)
     if (!packet.sender_hardware_address().is_zero() && !packet.sender_protocol_address().is_zero()) {
         // Someone has this IPv4 address. I guess we can try to remember that.
         // FIXME: Protect against ARP spamming.
-        update_arp_table(packet.sender_protocol_address(), packet.sender_hardware_address(), UpdateArp::Set);
+        update_arp_table(packet.sender_protocol_address(), packet.sender_hardware_address(), UpdateTable::Set);
     }
 
     if (packet.operation() == ARPOperation::Request) {
@@ -206,7 +206,7 @@ void handle_ipv4(EthernetFrameHeader const& eth, size_t frame_size, Time const&
             auto my_net = adapter.ipv4_address().to_u32() & adapter.ipv4_netmask().to_u32();
             auto their_net = packet.source().to_u32() & adapter.ipv4_netmask().to_u32();
             if (my_net == their_net)
-                update_arp_table(packet.source(), eth.source(), UpdateArp::Set);
+                update_arp_table(packet.source(), eth.source(), UpdateTable::Set);
         }
     });
 

+ 3 - 3
Kernel/Net/Routing.cpp

@@ -110,12 +110,12 @@ SpinlockProtected<HashMap<IPv4Address, MACAddress>>& arp_table()
     return *s_arp_table;
 }
 
-void update_arp_table(IPv4Address const& ip_addr, MACAddress const& addr, UpdateArp update)
+void update_arp_table(IPv4Address const& ip_addr, MACAddress const& addr, UpdateTable update)
 {
     arp_table().with([&](auto& table) {
-        if (update == UpdateArp::Set)
+        if (update == UpdateTable::Set)
             table.set(ip_addr, addr);
-        if (update == UpdateArp::Delete)
+        if (update == UpdateTable::Delete)
             table.remove(ip_addr);
     });
     s_arp_table_blocker_set->unblock_blockers_waiting_for_ipv4_address(ip_addr, addr);

+ 2 - 2
Kernel/Net/Routing.h

@@ -19,12 +19,12 @@ struct RoutingDecision {
     bool is_zero() const;
 };
 
-enum class UpdateArp {
+enum class UpdateTable {
     Set,
     Delete,
 };
 
-void update_arp_table(IPv4Address const&, MACAddress const&, UpdateArp update);
+void update_arp_table(IPv4Address const&, MACAddress const&, UpdateTable update);
 
 enum class AllowUsingGateway {
     Yes,