#include <pkt_handler.h>
|
enum | PktModuleName {
INVALID
, FLOW
, ARP
, DHCP
,
DHCPV6
, DNS
, ICMP
, ICMPV6
,
DIAG
, ICMP_ERROR
, ICMPV6_ERROR
, RX_PACKET
,
MAC_LEARNING
, BFD
, IGMP
, MAC_IP_LEARNING
,
MAX_MODULES
} |
|
typedef boost::function< bool(boost::shared_ptr< PktInfo >)> | RcvQueueFunc |
|
typedef boost::function< void(PktTrace::Pkt &)> | PktTraceCallback |
|
typedef WorkQueue< boost::shared_ptr< PacketBufferEnqueueItem > > | PktHandlerQueue |
|
|
| PktHandler (Agent *, PktModule *pkt_module) |
|
virtual | ~PktHandler () |
|
void | Register (PktModuleName type, RcvQueueFunc cb) |
|
void | Register (PktModuleName type, Proto *proto) |
|
void | Send (const AgentHdr &hdr, const PacketBufferPtr &buff) |
|
PktModuleName | ParsePacket (const AgentHdr &hdr, PktInfo *pkt_info, uint8_t *pkt) |
|
PktModuleName | ParseBfdDataPacket (const AgentHdr &hdr, PktInfo *pkt_info, uint8_t *pkt) |
|
int | ParseUserPkt (PktInfo *pkt_info, Interface *intf, PktType::Type &pkt_type, uint8_t *pkt) |
|
bool | ProcessPacket (boost::shared_ptr< PacketBufferEnqueueItem > item) |
|
bool | ProcessBfdDataPacket (boost::shared_ptr< PacketBufferEnqueueItem > item) |
|
void | HandleRcvPkt (const AgentHdr &hdr, const PacketBufferPtr &buff) |
|
void | SendMessage (PktModuleName mod, InterTaskMsg *msg) |
|
bool | IsGwPacket (const Interface *intf, const IpAddress &dst_ip) |
|
const PktStats & | GetStats () const |
|
void | ClearStats () |
|
void | PktTraceIterate (PktModuleName mod, PktTraceCallback cb) |
|
void | PktTraceClear (PktModuleName mod) |
|
void | PktTraceBuffers (PktModuleName mod, uint32_t buffers) |
|
uint32_t | PktTraceBuffers (PktModuleName mod) const |
|
uint32_t | PktTraceSize (PktModuleName mod) const |
|
void | AddPktTrace (PktModuleName module, PktTrace::Direction dir, const PktInfo *pkt) |
|
uint32_t | EncapHeaderLen () const |
|
Agent * | agent () const |
|
PktModule * | pkt_module () const |
|
void | Enqueue (PktModuleName module, boost::shared_ptr< PktInfo > pkt_info) |
|
bool | IsFlowPacket (PktInfo *pkt_info) |
|
void | CalculatePortIP (PktInfo *pkt_info) |
|
const PktHandlerQueue * | work_queue () const |
|
bool | IsBFDHealthCheckPacket (const PktInfo *pkt_info, const Interface *interface) |
|
bool | IsSegmentHealthCheckPacket (const PktInfo *pkt_info, const Interface *interface) |
|
uint64_t | GetBfdKaEnqueueCount () |
|
uint64_t | GetPktEnqueueCount () |
|
|
void | PktModuleEnqueue (PktModuleName mod, const AgentHdr &hdr, boost::shared_ptr< PktInfo > pkt_info, uint8_t *pkt) |
|
int | ParseEthernetHeader (PktInfo *pkt_info, uint8_t *pkt) |
|
int | ParseMplsHdr (PktInfo *pkt_info, uint8_t *pkt) |
|
int | ParseIpPacket (PktInfo *pkt_info, PktType::Type &pkt_type, uint8_t *ptr) |
|
int | ParseMPLSoGRE (PktInfo *pkt_info, uint8_t *pkt) |
|
int | ParseMPLSoUDP (PktInfo *pkt_info, uint8_t *pkt) |
|
int | ParseControlWord (PktInfo *pkt_info, uint8_t *pkt, const MplsLabel *mpls) |
|
int | ParseUDPTunnels (PktInfo *pkt_info, uint8_t *pkt) |
|
int | ParseVxlan (PktInfo *pkt_info, uint8_t *pkt) |
|
int | ParseUdp (PktInfo *pkt_info, uint8_t *pkt) |
|
bool | ComputeForwardingMode (PktInfo *pkt_info, const Interface *intf) const |
|
void | SetOuterIp (PktInfo *pkt_info, uint8_t *pkt) |
|
void | SetOuterMac (PktInfo *pkt_info) |
|
bool | IgnoreFragmentedPacket (PktInfo *pkt_info) |
|
bool | IsDHCPPacket (PktInfo *pkt_info) |
|
bool | IsValidInterface (uint32_t ifindex, Interface **interface) |
|
bool | IsToRDevice (uint32_t vrf_id, const IpAddress &ip) |
|
bool | IsManagedTORPacket (Interface *intf, PktInfo *pkt_info, PktType::Type &pkt_type, uint8_t *pkt, bool *pkt_ok) |
|
bool | IsFlowPacket (const AgentHdr &agent_hdr) |
|
bool | IsDiagPacket (PktInfo *pkt_info) |
|
bool | ValidateIpPacket (PktInfo *pkt_info) |
|
| DISALLOW_COPY_AND_ASSIGN (PktHandler) |
|
Definition at line 224 of file pkt_handler.h.
◆ PktHandlerQueue
◆ PktTraceCallback
◆ RcvQueueFunc
◆ PktModuleName
Enumerator |
---|
INVALID | |
FLOW | |
ARP | |
DHCP | |
DHCPV6 | |
DNS | |
ICMP | |
ICMPV6 | |
DIAG | |
ICMP_ERROR | |
ICMPV6_ERROR | |
RX_PACKET | |
MAC_LEARNING | |
BFD | |
IGMP | |
MAC_IP_LEARNING | |
MAX_MODULES | |
Definition at line 231 of file pkt_handler.h.
◆ PktHandler()
◆ ~PktHandler()
PktHandler::~PktHandler |
( |
| ) |
|
|
virtual |
◆ AddPktTrace()
◆ agent()
Agent* PktHandler::agent |
( |
| ) |
const |
|
inline |
◆ CalculatePortIP()
void PktHandler::CalculatePortIP |
( |
PktInfo * |
pkt_info | ) |
|
◆ ClearStats()
void PktHandler::ClearStats |
( |
| ) |
|
|
inline |
◆ ComputeForwardingMode()
bool PktHandler::ComputeForwardingMode |
( |
PktInfo * |
pkt_info, |
|
|
const Interface * |
intf |
|
) |
| const |
|
private |
◆ DISALLOW_COPY_AND_ASSIGN()
PktHandler::DISALLOW_COPY_AND_ASSIGN |
( |
PktHandler |
| ) |
|
|
private |
◆ EncapHeaderLen()
uint32_t PktHandler::EncapHeaderLen |
( |
| ) |
const |
◆ Enqueue()
◆ GetBfdKaEnqueueCount()
uint64_t PktHandler::GetBfdKaEnqueueCount |
( |
| ) |
|
|
inline |
◆ GetPktEnqueueCount()
uint64_t PktHandler::GetPktEnqueueCount |
( |
| ) |
|
|
inline |
◆ GetStats()
const PktStats& PktHandler::GetStats |
( |
| ) |
const |
|
inline |
◆ HandleRcvPkt()
◆ IgnoreFragmentedPacket()
bool PktHandler::IgnoreFragmentedPacket |
( |
PktInfo * |
pkt_info | ) |
|
|
private |
◆ IsBFDHealthCheckPacket()
bool PktHandler::IsBFDHealthCheckPacket |
( |
const PktInfo * |
pkt_info, |
|
|
const Interface * |
interface |
|
) |
| |
◆ IsDHCPPacket()
bool PktHandler::IsDHCPPacket |
( |
PktInfo * |
pkt_info | ) |
|
|
private |
◆ IsDiagPacket()
bool PktHandler::IsDiagPacket |
( |
PktInfo * |
pkt_info | ) |
|
|
private |
◆ IsFlowPacket() [1/2]
bool PktHandler::IsFlowPacket |
( |
const AgentHdr & |
agent_hdr | ) |
|
|
private |
◆ IsFlowPacket() [2/2]
bool PktHandler::IsFlowPacket |
( |
PktInfo * |
pkt_info | ) |
|
◆ IsGwPacket()
◆ IsManagedTORPacket()
◆ IsSegmentHealthCheckPacket()
bool PktHandler::IsSegmentHealthCheckPacket |
( |
const PktInfo * |
pkt_info, |
|
|
const Interface * |
interface |
|
) |
| |
◆ IsToRDevice()
bool PktHandler::IsToRDevice |
( |
uint32_t |
vrf_id, |
|
|
const IpAddress & |
ip |
|
) |
| |
|
private |
◆ IsValidInterface()
bool PktHandler::IsValidInterface |
( |
uint32_t |
ifindex, |
|
|
Interface ** |
interface |
|
) |
| |
|
private |
◆ ParseBfdDataPacket()
◆ ParseControlWord()
int PktHandler::ParseControlWord |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt, |
|
|
const MplsLabel * |
mpls |
|
) |
| |
|
private |
◆ ParseEthernetHeader()
int PktHandler::ParseEthernetHeader |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt |
|
) |
| |
|
private |
◆ ParseIpPacket()
◆ ParseMplsHdr()
int PktHandler::ParseMplsHdr |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt |
|
) |
| |
|
private |
◆ ParseMPLSoGRE()
int PktHandler::ParseMPLSoGRE |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt |
|
) |
| |
|
private |
◆ ParseMPLSoUDP()
int PktHandler::ParseMPLSoUDP |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt |
|
) |
| |
|
private |
◆ ParsePacket()
◆ ParseUdp()
int PktHandler::ParseUdp |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt |
|
) |
| |
|
private |
◆ ParseUDPTunnels()
int PktHandler::ParseUDPTunnels |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt |
|
) |
| |
|
private |
◆ ParseUserPkt()
◆ ParseVxlan()
int PktHandler::ParseVxlan |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt |
|
) |
| |
|
private |
◆ pkt_module()
◆ PktModuleEnqueue()
◆ PktTraceBuffers() [1/2]
◆ PktTraceBuffers() [2/2]
void PktHandler::PktTraceBuffers |
( |
PktModuleName |
mod, |
|
|
uint32_t |
buffers |
|
) |
| |
|
inline |
◆ PktTraceClear()
◆ PktTraceIterate()
◆ PktTraceSize()
◆ ProcessBfdDataPacket()
◆ ProcessPacket()
◆ Register() [1/2]
◆ Register() [2/2]
◆ Send()
◆ SendMessage()
◆ SetOuterIp()
void PktHandler::SetOuterIp |
( |
PktInfo * |
pkt_info, |
|
|
uint8_t * |
pkt |
|
) |
| |
|
private |
◆ SetOuterMac()
void PktHandler::SetOuterMac |
( |
PktInfo * |
pkt_info | ) |
|
|
private |
◆ ValidateIpPacket()
bool PktHandler::ValidateIpPacket |
( |
PktInfo * |
pkt_info | ) |
|
|
private |
◆ work_queue()
◆ agent_
Agent* PktHandler::agent_ |
|
private |
◆ bfd_keepalive_proto_
Proto* PktHandler::bfd_keepalive_proto_ |
|
private |
◆ iid_
◆ kMulticastControlWord
const uint32_t PktHandler::kMulticastControlWord = 0 |
|
static |
◆ kMulticastControlWordSize
const uint32_t PktHandler::kMulticastControlWordSize = 4 |
|
static |
◆ pkt_module_
◆ pkt_trace_
◆ proto_list_
◆ stats_
◆ work_queue_
◆ work_queue_bfd_ka_
The documentation for this class was generated from the following files: