src/IPStack/IPStackProtocol.swift
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() {}
}