OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bfd_control_packet.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 CodiLime, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_BFD_BFD_CONTROL_PACKET_H_
6 #define SRC_BFD_BFD_CONTROL_PACKET_H_
7 
8 #include <string>
9 #include <boost/asio/ip/address.hpp>
10 #include <base/parse_object.h>
11 
12 #include "bfd/bfd_common.h"
13 
14 class ParseContext;
15 class EncodeContext;
16 
17 namespace BFD {
18 struct ControlPacket : public ParseObject {
20  final(false),
23  demand(false),
24  multipoint(false),
27  required_min_echo_rx_interval(boost::posix_time::microseconds(0)) {
28  }
29 
30  std::string toString() const;
31  ResultCode Verify() const;
32 
33  bool poll;
34  bool final;
37  bool demand;
38  bool multipoint;
40  int length;
41 
46 
50 
52  boost::asio::ip::udp::endpoint local_endpoint;
53  boost::asio::ip::udp::endpoint remote_endpoint;
54 };
55 
56 ControlPacket* ParseControlPacket(const uint8_t *data, size_t size);
57 int EncodeControlPacket(const ControlPacket *msg, uint8_t *data, size_t size);
58 
59 bool operator==(const ControlPacket &p1, const ControlPacket &p2);
60 } // namespace BFD
61 
62 #endif // SRC_BFD_BFD_CONTROL_PACKET_H_
uint32_t Discriminator
Definition: bfd_common.h:17
int EncodeControlPacket(const ControlPacket *msg, uint8_t *data, size_t size)
ResultCode Verify() const
std::string toString() const
SessionIndex session_index
Diagnostic
Definition: bfd_common.h:49
BFD::Discriminator sender_discriminator
BFD::Discriminator receiver_discriminator
boost::posix_time::time_duration TimeInterval
Definition: bfd_common.h:18
TimeInterval required_min_rx_interval
boost::asio::ip::udp::endpoint remote_endpoint
bool operator==(const ControlPacket &p1, const ControlPacket &p2)
ResultCode
Definition: bfd_common.h:41
const int kMinimalPacketLength
Definition: bfd_common.cc:41
BFD::Diagnostic diagnostic
BFDState
Definition: bfd_common.h:21
boost::asio::ip::udp::endpoint local_endpoint
TimeInterval required_min_echo_rx_interval
TimeInterval desired_min_tx_interval
ControlPacket * ParseControlPacket(const uint8_t *data, size_t size)