using IFS.Gateway;
using PcapDotNet.Packets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IFS.Transport
{
///
/// IPupPacketInterface provides an abstraction over a transport (Ethernet, IP, Carrier Pigeon)
/// which can provide encapsulation for PUPs.
///
public interface IPupPacketInterface
{
///
/// Sends the given PUP over the transport.
///
///
void Send(PUP p);
///
/// Registers a callback (into the router) to be invoked on receipt of a PUP.
///
///
void RegisterRouterCallback(RoutePupCallback callback);
///
/// Shuts down the interface.
///
void Shutdown();
}
///
/// IRawPacketInterface provides an abstraction over a transport (Ethernet, IP, Carrier Pigeon)
/// which can provide encapsulation for raw Ethernet frames.
///
/// For the time being, this exists only to provide support for BreathOfLife packets (the only non-PUP
/// Ethernet Packet the IFS suite deals with). This only requires being able to send packets, so no
/// receive is implemented.
///
/// Note also that no routing will be provided for raw packets; they are sent to the local 'net only.
///
public interface IRawPacketInterface
{
///
/// Sends the specified data over the transport.
///
///
///
///
///
void Send(byte[] data, byte source, byte destination, ushort frameType);
}
}