punchnet-macos/Tun/Punchnet/Actors/ArpServerActor.swift

38 lines
717 B
Swift

//
// ArpServer.swift
// sdlan
//
// Created by on 2025/7/14.
//
import Foundation
import Darwin
actor ArpServerActor {
private var known_macs: [UInt32:Data] = [:]
init(known_macs: [UInt32:Data]) {
self.known_macs = known_macs
}
func query(ip: UInt32) -> Data? {
return self.known_macs[ip]
}
func append(ip: UInt32, mac: Data) {
self.known_macs[ip] = mac
}
func remove(ip: UInt32) {
self.known_macs.removeValue(forKey: ip)
}
func dropMacs(macs: [Data]) {
self.known_macs = self.known_macs.filter { !macs.contains($0.value) }
}
func clear() {
self.known_macs = [:]
}
}