5 #ifndef vnsw_agent_icmpv6_handler_h_
6 #define vnsw_agent_icmpv6_handler_h_
10 #define IPV6_ADDR_SIZE_BYTES 16
11 #define IPV6_ICMP_NEXT_HEADER 58
19 static const Ip6Address::bytes_type
kPrefix;
20 static const Ip6Address::bytes_type
kSuffix;
25 boost::asio::io_context &io);
32 uint32_t itf, uint32_t vrf,
bool solicited);
35 bool send_unicast=
false);
45 uint8_t *src, uint8_t *dest,
51 uint8_t *src_ip, uint8_t *dest_ip,
56 uint8_t *src_ip, uint8_t *dest_ip,
61 uint8_t *sip, uint8_t *dip);
73 #endif // vnsw_agent_icmpv6_handler_h_
static const Ip6Address::bytes_type kSuffix
static const uint8_t kIPv6AddrUnspecifiedBytes[IPV6_ADDR_SIZE_BYTES]
static const Ip6Address::bytes_type kPrefix
uint16_t FillNeighborSolicit(uint8_t *buf, const Ip6Address &target, uint8_t *sip, uint8_t *dip)
static const Ip6Address kSolicitedNodeIpPrefix
void Ipv6Lower24BitsExtract(uint8_t *dst, uint8_t *src)
void SendRAResponse(uint32_t ifindex, uint32_t vrfindex, uint8_t *src_ip, uint8_t *dest_ip, const MacAddress &dest_mac, const Ip6Address &prefix, uint8_t plen)
#define IPV6_ADDR_SIZE_BYTES
bool RouterAdvertisement(Icmpv6Proto *proto)
void SendNeighborAdvert(const Ip6Address &sip, const Ip6Address &dip, const MacAddress &smac, const MacAddress &dmac, uint32_t itf, uint32_t vrf, bool solicited)
tbb::atomic< uint32_t > refcount_
boost::asio::ip::address_v6 Ip6Address
uint16_t FillNeighborAdvertisement(uint8_t *buf, uint8_t *dip, uint8_t *sip, const Ip6Address &target, const MacAddress &dmac, bool solicited)
void SolicitedMulticastIpAndMac(const Ip6Address &dip, uint8_t *ip, MacAddress &mac)
bool IsDefaultGatewayConfigured(uint32_t ifindex, const Ip6Address &addr)
friend void intrusive_ptr_release(const Icmpv6Handler *p)
uint16_t FillRouterAdvertisement(uint8_t *buf, uint32_t ifindex, uint8_t *src, uint8_t *dest, const Ip6Address &prefix, uint8_t plen)
void SendNeighborSolicit(const Ip6Address &sip, const Ip6Address &dip, const VmInterface *vmi, uint32_t vrf, bool send_unicast=false)
void Ipv6AddressBitwiseOr(uint8_t *dst, uint8_t *src)
void EntryDelete(NdpKey &key)
DISALLOW_COPY_AND_ASSIGN(Icmpv6Handler)
bool IsIPv6AddrUnspecifiedBytes(const uint8_t *ip)
friend void intrusive_ptr_add_ref(const Icmpv6Handler *p)
void SendIcmpv6Response(uint32_t ifindex, uint32_t vrfindex, uint8_t *src_ip, uint8_t *dest_ip, const MacAddress &dest_mac, uint16_t len)
static const Ip6Address kSolicitedNodeIpSuffixMask
Icmpv6Handler(Agent *agent, boost::shared_ptr< PktInfo > info, boost::asio::io_context &io)