vnet::protocol

namespace protocol

Typedefs

using uint_packet_t = uint16_t

Enums

enum PacketType

Values:

enumerator HEARTBEAT
enumerator SWITCH_MIP
enumerator AGENT_MIP
enumerator CONNECT_TO_SWITCH
enumerator AGENT_CONNECTION_TOKEN
enumerator AUTH_CONNECT_TO_SWITCH
enumerator CONNECTION_ACCEPTED
enumerator AGENT_MRP
enumerator IPV4_RAW
enumerator AGENT_REGISTERED
enumerator SWITCH_ROUTE_UPDATE
enumerator SWITCH_DISCONNECTED
enumerator SWITCH_HELLO
enumerator AGENT_UNREGISTERED
enumerator PEER_TOKEN
enumerator SWITCH_CONFIG
enumerator CONFIG_PUSH

Functions

netqueue::NetworkQueueHandler makeNetworkQueueHandler(Dispatch *dispatch)
PacketType ntoh_packet_type(uint_packet_t type)
uint_packet_t hton_packet_type(PacketType type)

Variables

const size_t PACKET_HEADER_SIZE = sizeof(PacketHeader)
const uint32_t MAX_PAYLOAD_SIZE = NET_BUFFER_SIZE - PACKET_HEADER_SIZE

Largest payload a peer may announce in a header.

A packet must fit in a NetworkElement receive buffer, so anything larger is a protocol error and the connection is dropped.

struct Dispatch
#include <dispatch.hpp>

Public Functions

void onSocketReady(netqueue::socket_data data)
virtual void onActivity(netqueue::socket_data data)
virtual void onClose(netqueue::close_data close_content)
virtual void onTunReady(netqueue::tun_data data)
virtual void onConnected(netqueue::socket_data data)

A pending connect or TLS handshake finished; packets can flow.

virtual void onHeartbeat(netqueue::socket_data data)
virtual void onSwitchMIP(netqueue::socket_data data, mip::PacketSwitchMIP &packet)

Machine Initialization Procedure.

virtual void onAgentMIP(netqueue::socket_data data, mip::PacketAgentMIP &packet)
virtual void onConnectToSwitch(netqueue::socket_data data, mip::PacketConnectToSwitch &packet)
virtual void onAuthConnectToSwitch(netqueue::socket_data data, mip::PacketAuthConnectToSwitch &packet)
virtual void onAgentConnectionToken(netqueue::socket_data data, mip::PacketAgentConnectionToken &packet)
virtual void onConnectionAccepted(netqueue::socket_data data, mip::PacketConnectionAccepted &packet)
virtual void onAgentMRP(netqueue::socket_data data, mip::PacketAgentMRP &packet)

Reconnection.

virtual void onIPv4Raw(netqueue::socket_data data, const uint8_t *raw, size_t len)

Routing.

One IPv4 datagram, as it was read from a TUN: no protobuf wrapper.

virtual void onAgentRegistered(netqueue::socket_data data, mip::PacketAgentRegistered &packet)
virtual void onSwitchRouteUpdate(netqueue::socket_data data, mip::PacketSwitchRouteUpdate &packet)
virtual void onSwitchDisconnected(netqueue::socket_data data, mip::PacketSwitchDisconnected &packet)
virtual void onSwitchHello(netqueue::socket_data data, mip::PacketSwitchHello &packet)
virtual void onAgentUnregistered(netqueue::socket_data data, mip::PacketAgentUnregistered &packet)
virtual void onPeerToken(netqueue::socket_data data, mip::PacketPeerToken &packet)
virtual void onSwitchConfig(netqueue::socket_data data, mip::PacketSwitchConfig &packet)
virtual void onConfigPush(netqueue::socket_data data, mip::PacketConfigPush &packet)

One piece of the switch config, conductor to switch.

virtual ~Dispatch() = default
struct PacketHeader
#include <header.hpp>

Public Functions

uint32_t get_payload_size() const
PacketType get_packet_type() const
PacketHeader()
PacketHeader(uint32_t payload_size, PacketType packet_type)