38 lines
664 B
Swift
38 lines
664 B
Swift
//
|
|
// ArpServer.swift
|
|
// sdlan
|
|
//
|
|
// Created by 安礼成 on 2025/7/14.
|
|
//
|
|
import Foundation
|
|
import Darwin
|
|
|
|
actor ArpServerActor {
|
|
private var known_macs: [UInt32:Data] = [:]
|
|
|
|
init() {
|
|
|
|
}
|
|
|
|
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 = [:]
|
|
}
|
|
|
|
}
|