5 #ifndef vnsw_agent_proto_handler_hpp
6 #define vnsw_agent_proto_handler_hpp
31 boost::asio::io_context &io);
34 virtual bool Run() = 0;
37 void Send(uint32_t itf, uint32_t vrf, uint16_t cmd,
41 const uint16_t proto);
43 const MacAddress &dest,
const uint16_t proto, uint16_t vlan_id);
46 const uint16_t proto);
47 int EthHdr(
char *buff, uint16_t len, uint32_t ifindex,
49 const uint16_t proto);
51 void VlanHdr(uint8_t *ptr, uint16_t tci);
52 void IpHdr(uint16_t len, in_addr_t src, in_addr_t dest, uint8_t protocol,
53 uint16_t
id, uint8_t ttl);
54 uint16_t
IpHdr(
char *buff, uint16_t buf_len, uint16_t len, in_addr_t src,
55 in_addr_t dest, uint8_t protocol, uint16_t
id, uint8_t ttl);
56 void Ip6Hdr(ip6_hdr *ip, uint16_t plen, uint8_t next_header,
57 uint8_t hlim, uint8_t *src, uint8_t *dest);
58 void UdpHdr(uint16_t len, in_addr_t src, uint16_t src_port, in_addr_t dest,
60 void UdpHdr(udphdr *hdr, uint16_t len,
const uint8_t *src, uint16_t src_port,
61 const uint8_t *dest, uint16_t dest_port, uint8_t next_hdr);
62 void UdpHdr(uint16_t len,
const uint8_t *src, uint16_t src_port,
63 const uint8_t *dest, uint16_t dest_port, uint8_t next_hdr);
64 uint16_t
UdpHdr(udphdr *udp, uint16_t buf_len, uint16_t len, in_addr_t src,
65 uint16_t src_port, in_addr_t dest, uint16_t dest_port);
66 uint16_t
IcmpHdr(
char *buff, uint16_t buf_len, uint8_t
type, uint8_t code,
67 uint16_t word1, uint16_t word2);
72 uint32_t
Sum(uint16_t *, std::size_t, uint32_t)
const;
73 uint16_t
Csum(uint16_t *, std::size_t, uint32_t)
const;
74 uint16_t
UdpCsum(in_addr_t, in_addr_t, std::size_t, udphdr *)
const;
75 uint16_t
Ipv6Csum(
const uint8_t *src,
const uint8_t *dest,
76 uint16_t plen, uint8_t next_hdr, uint16_t *hdr)
const;
77 uint16_t
Icmpv6Csum(
const uint8_t *src,
const uint8_t *dest,
78 icmp6_hdr *icmp, uint16_t plen)
const;
93 boost::asio::io_context &
io_;
97 uint16_t src_port, uint16_t dest_port);
102 #endif // vnsw_agent_proto_handler_hpp
uint32_t EncapHeaderLen() const
PseudoUdpHdr(in_addr_t s, in_addr_t d, uint8_t p, uint16_t l)
ProtoHandler(Agent *agent, boost::shared_ptr< PktInfo > info, boost::asio::io_context &io)
uint16_t UdpCsum(in_addr_t, in_addr_t, std::size_t, udphdr *) const
uint16_t Ipv6Csum(const uint8_t *src, const uint8_t *dest, uint16_t plen, uint8_t next_hdr, uint16_t *hdr) const
uint16_t GetLength() const
uint16_t Csum(uint16_t *, std::size_t, uint32_t) const
uint32_t GetVrfIndex() const
boost::shared_ptr< PktInfo > pkt_info_
void IgmpChecksum(char *buff, uint16_t buf_len)
int EthHdr(const MacAddress &src, const MacAddress &dest, const uint16_t proto)
uint32_t GetInterfaceIndex() const
void Send(uint32_t itf, uint32_t vrf, uint16_t, PktHandler::PktModuleName)
boost::asio::io_context & io_
void VlanHdr(uint8_t *ptr, uint16_t tci)
PktInfo * pkt_info() const
DISALLOW_COPY_AND_ASSIGN(ProtoHandler)
void Ip6Hdr(ip6_hdr *ip, uint16_t plen, uint8_t next_header, uint8_t hlim, uint8_t *src, uint8_t *dest)
void IcmpChecksum(char *buff, uint16_t buf_len)
void UdpHdr(uint16_t len, in_addr_t src, uint16_t src_port, in_addr_t dest, uint16_t dest_port)
void FillUdpHdr(udphdr *udp, uint16_t len, uint16_t src_port, uint16_t dest_port)
uint32_t Sum(uint16_t *, std::size_t, uint32_t) const
uint16_t IcmpHdr(char *buff, uint16_t buf_len, uint8_t type, uint8_t code, uint16_t word1, uint16_t word2)
uint16_t Icmpv6Csum(const uint8_t *src, const uint8_t *dest, icmp6_hdr *icmp, uint16_t plen) const
uint32_t GetCmdParam() const
void IpHdr(uint16_t len, in_addr_t src, in_addr_t dest, uint8_t protocol, uint16_t id, uint8_t ttl)