35 lines
1.0 KiB
Swift
Executable File
Vendored
35 lines
1.0 KiB
Swift
Executable File
Vendored
import Foundation
|
|
|
|
/// The protocol defines an IP stack.
|
|
public protocol IPStackProtocol: class {
|
|
/**
|
|
Input a packet into the stack.
|
|
|
|
- parameter packet: The IP packet.
|
|
- parameter version: The version of the IP packet, i.e., AF_INET, AF_INET6.
|
|
|
|
- returns: If the stack takes in this packet. If the packet is taken in, then it won't be processed by other IP stacks.
|
|
*/
|
|
func input(packet: Data, version: NSNumber?) -> Bool
|
|
|
|
/// This is called when this stack decided to output some IP packet. This is set automatically when the stack is registered to some interface.
|
|
///
|
|
/// The parameter is the safe as the `inputPacket`.
|
|
///
|
|
/// - note: This block is thread-safe.
|
|
var outputFunc: (([Data], [NSNumber]) -> Void)! { get set }
|
|
|
|
func start()
|
|
|
|
/**
|
|
Stop the stack from running.
|
|
|
|
This is called when the interface this stack is registered to stop to processing packets and will be released soon.
|
|
*/
|
|
func stop()
|
|
}
|
|
|
|
extension IPStackProtocol {
|
|
public func stop() {}
|
|
}
|