diff options
| author | Quentin Young <qlyoung@cumulusnetworks.com> | 2019-02-01 18:49:16 +0000 | 
|---|---|---|
| committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2019-05-17 00:27:08 +0000 | 
| commit | d9e01e1cabcc9a15e946922b32af5550cfb5282b (patch) | |
| tree | f5c342b188fa88cee7fb5578e4b2dd7dcf8e62f8 /vrrpd/vrrp_packet.h | |
| parent | 72df9d93a57e0022104fd7caeb3c67e46221357b (diff) | |
vrrpd: cleanup vrrp packet crafting code
* Prefix all packet functions with 'vrrp_pkt'
* Break out checksum computation into separate function
* Accept version field when building advertisements
* Update doc comments
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'vrrpd/vrrp_packet.h')
| -rw-r--r-- | vrrpd/vrrp_packet.h | 28 | 
1 files changed, 18 insertions, 10 deletions
diff --git a/vrrpd/vrrp_packet.h b/vrrpd/vrrp_packet.h index df43ee7604..ed577ddcfa 100644 --- a/vrrpd/vrrp_packet.h +++ b/vrrpd/vrrp_packet.h @@ -26,7 +26,6 @@  #include "lib/memory.h"  #include "lib/prefix.h" -#define VRRP_VERSION 3  #define VRRP_TYPE_ADVERTISEMENT 1  extern const char *vrrp_packet_names[16]; @@ -94,11 +93,19 @@ struct vrrp_pkt {  #define VRRP_MAX_PKT_SIZE VRRP_MAX_PKT_SIZE_V6  /* - * Builds a VRRP packet. + * Builds a VRRP ADVERTISEMENT packet.   *   * pkt   *    Pointer to store pointer to result buffer in   * + * src + *    Source address packet will be transmitted from. This is needed to compute + *    the VRRP checksum. The returned packet must be sent in an IP datagram with + *    the source address equal to this field, or the checksum will be invalid. + * + * version + *    VRRP version; must be 2 or 3 + *   * vrid   *    Virtual Router Identifier   * @@ -118,12 +125,13 @@ struct vrrp_pkt {   *    array of pointer to either struct in_addr (v6 = false) or struct in6_addr   *    (v6 = true)   */ -ssize_t vrrp_pkt_build(struct vrrp_pkt **pkt, struct ipaddr *src, uint8_t vrid, -		       uint8_t prio, uint16_t max_adver_int, uint8_t numip, -		       struct ipaddr **ips); +ssize_t vrrp_pkt_adver_build(struct vrrp_pkt **pkt, struct ipaddr *src, +			     uint8_t version, uint8_t vrid, uint8_t prio, +			     uint16_t max_adver_int, uint8_t numip, +			     struct ipaddr **ips);  /* - * Dumps a VRRP packet to a string. + * Dumps a VRRP ADVERTISEMENT packet to a string.   *   * Currently only dumps the header.   * @@ -139,7 +147,7 @@ ssize_t vrrp_pkt_build(struct vrrp_pkt **pkt, struct ipaddr *src, uint8_t vrid,   * Returns:   *    # bytes written to buf   */ -size_t vrrp_pkt_dump(char *buf, size_t buflen, struct vrrp_pkt *pkt); +size_t vrrp_pkt_adver_dump(char *buf, size_t buflen, struct vrrp_pkt *pkt);  /* @@ -170,8 +178,8 @@ size_t vrrp_pkt_dump(char *buf, size_t buflen, struct vrrp_pkt *pkt);   * Returns:   *    Size of VRRP packet, or -1 upon error   */ -ssize_t vrrp_parse_datagram(int family, struct msghdr *m, size_t read, -			    struct vrrp_pkt **pkt, char *errmsg, -			    size_t errmsg_len); +ssize_t vrrp_pkt_parse_datagram(int family, struct msghdr *m, size_t read, +				struct vrrp_pkt **pkt, char *errmsg, +				size_t errmsg_len);  #endif /* __VRRP_PACKET_H__ */  | 
