Some cleaning and comments

This commit is contained in:
Arnaud Andre 2015-09-15 18:34:08 +02:00
parent af6b5177fa
commit cd28e3892e
11 changed files with 32 additions and 47 deletions

View file

@ -84,7 +84,6 @@ static int vrrp_adv_eth_build(struct iovec *iov, const uint8_t vrid,
return 0;
}
/**
* vrrp_adv_ip4_build() - build VRRP IPv4 advertisement
*/
@ -108,7 +107,7 @@ static int vrrp_adv_ip4_build(struct iovec *iov, const struct vrrp_net *vnet)
iph->frag_off = 0x00;
iph->protocol = IPPROTO_VRRP;
iph->saddr = vnet->vif.ipx.addr.s_addr;
iph->saddr = vnet->vif.ip_addr.s_addr;
iph->daddr = htonl(INADDR_VRRP_GROUP);
iph->check = 0;
@ -119,7 +118,6 @@ static int vrrp_adv_ip4_build(struct iovec *iov, const struct vrrp_net *vnet)
return 0;
}
/**
* vrrp_adv_ip6_build() - build VRRP IPv6 advertisement
*/
@ -151,8 +149,6 @@ static int vrrp_adv_ip6_build(struct iovec *iov, const struct vrrp_net *vnet)
return 0;
}
/**
* vrrp_net_adv_build() - build VRRP adv pkt
*/
@ -172,11 +168,12 @@ static int vrrp_adv_build(struct iovec *iov, const struct vrrp_net *vnet,
pkt->vrid = vnet->vrid;
pkt->priority = vrrp->priority;
pkt->naddr = vrrp->naddr;
if (vrrp->version == RFC3768) {
pkt->auth_type = vrrp->auth_type;
pkt->adv_int = vrrp->adv_int;
}
if (vrrp->version == RFC5798) {
else if (vrrp->version == RFC5798) {
pkt->max_adv_int = htons(vrrp->adv_int);
}
@ -189,6 +186,7 @@ static int vrrp_adv_build(struct iovec *iov, const struct vrrp_net *vnet,
int naddr = 0;
list_for_each_entry_reverse(vip_ptr, &vnet->vip_list, iplist) {
if (vnet->family == AF_INET) {
vip_addr[pos] = vip_ptr->ip_addr.s_addr;
++pos;
@ -199,6 +197,7 @@ static int vrrp_adv_build(struct iovec *iov, const struct vrrp_net *vnet,
pos += 4;
}
++naddr;
if (naddr > vrrp->naddr) {
log_error
("[%d] Build invalid avd pkt : try to write more vip than expected",
@ -246,7 +245,6 @@ int vrrp_adv_send_zero(struct vrrp_net *vnet)
uint16_t chksum = pkt->chksum;
/* chksum */
pkt->chksum = vnet->adv_checksum(vnet, pkt, NULL, NULL);
/* send adv pkt */
@ -264,13 +262,15 @@ int vrrp_adv_send_zero(struct vrrp_net *vnet)
*/
int vrrp_adv_init(struct vrrp_net *vnet, const struct vrrp *vrrp)
{
int status = 0;
int status = -1;
status = vrrp_adv_eth_build(&vnet->__adv[0], vnet->vrid, vnet->family);
if (vnet->family == AF_INET)
status |= vrrp_adv_ip4_build(&vnet->__adv[1], vnet);
else
else /* AF_INET6 */
status |= vrrp_adv_ip6_build(&vnet->__adv[1], vnet);
status |= vrrp_adv_build(&vnet->__adv[2], vnet, vrrp);
return status;

View file

@ -29,7 +29,6 @@ int vrrp_adv_send(struct vrrp_net *vnet);
int vrrp_adv_send_zero(struct vrrp_net *vnet);
uint16_t vrrp_adv_chksum(struct vrrp_net *vnet, struct vrrphdr *pkt,
uint32_t saddr, uint32_t daddr);
uint16_t vrrp_adv_ip6_chksum(struct vrrp_net *vnet, struct vrrphdr *pkt,
struct in6_addr *saddr, struct in6_addr *daddr);

View file

@ -161,7 +161,7 @@ static int vrrp_arp_vrrp_build(struct iovec *iov, struct vrrp_ip *vip,
*/
int vrrp_arp_init(struct vrrp_net *vnet)
{
int status = 0;
int status = -1;
/* we have to build one arp pkt by vip */
struct vrrp_ip *vip_ptr = NULL;
@ -192,6 +192,5 @@ void vrrp_arp_cleanup(struct vrrp_net *vnet)
struct iovec *iov = &vip_ptr->__topology[i];
free(iov->iov_base);
}
}
}

View file

@ -254,6 +254,7 @@ static int vrrp_ip4_setsockopt( __attribute__ ((unused))
int sock_fd, __attribute__ ((unused))
int vrid)
{
/* nop */
return 0;
}

View file

@ -127,7 +127,6 @@ static int vrrp_ip6_mgroup(struct vrrp_net *vnet)
return 0;
}
/**
* vrrp_ip6_cmp() - Compare VIP list between received vrrpkt and our instance
* Return 0 if the list is the same,
@ -138,11 +137,6 @@ static int vrrp_ip6_viplist_cmp(struct vrrp_net *vnet, struct vrrphdr *vrrpkt)
uint32_t *vip_addr =
(uint32_t *) ((unsigned char *) vrrpkt + VRRP_PKTHDR_SIZE);
#ifdef DEBUG
print_buf_hexa("vrrp_net_vip6_check vip_addr", vip_addr,
sizeof(struct in6_addr));
#endif
uint32_t pos = 0;
int naddr = 0;
int ndiff = 0;
@ -222,13 +216,11 @@ static int vrrp_ip6_recv(int sock_fd, struct vrrp_recv *recv,
return -1;
}
/* SRC ADDRESS */
/* src address */
memcpy(&recv->ip_saddr6, &src.sin6_addr, sizeof(struct in6_addr));
uint8_t *opt;
/* HOPLIMIT */
opt = find_ancillary(&msg, IPV6_HOPLIMIT);
/* hoplimit */
uint8_t *opt = find_ancillary(&msg, IPV6_HOPLIMIT);
if (opt == NULL) {
log_error("recvmsg - unknown hop limit");
return -1;
@ -236,7 +228,7 @@ static int vrrp_ip6_recv(int sock_fd, struct vrrp_recv *recv,
recv->header.ttl = *(int *) opt;
/* DST ADDRESS */
/* dst address */
opt = find_ancillary(&msg, IPV6_PKTINFO);
if (opt == NULL) {
log_error("recvmsg - unknown dst address");
@ -247,9 +239,11 @@ static int vrrp_ip6_recv(int sock_fd, struct vrrp_recv *recv,
memcpy(&recv->ip_daddr6, &pktinfo->ipi6_addr, sizeof(struct in6_addr));
/* other options */
recv->header.len = sizeof(struct ip6_hdr);
recv->header.totlen = recv->header.len + len;
/* kludge, we force it since we have no way to read it in recvmsg() */
/* kludge, we force it since we have no way to read it in recvmsg().
* But we have set IPPROTO_VRRP in vrrp_net_socket() */
recv->header.proto = IPPROTO_VRRP;
/* buf is directly filled with VRRP adv

View file

@ -36,6 +36,7 @@
#define IN6ADDR_MCAST "ff02::1"
#define ETHDR_SIZE sizeof(struct ether_header)
/**
* ether_header vrrp_na_eth
*/
@ -50,7 +51,6 @@ static struct ether_header vrrp_na_eth = {
0x00}, /* vrrp->vrid */
};
/**
* pshdr_ip6 - pseudo header IPv6
*/
@ -205,7 +205,7 @@ int vrrp_na_send(struct vrrp_net *vnet)
*/
int vrrp_na_init(struct vrrp_net *vnet)
{
int status = 0;
int status = -1;
/* we have to build one na pkt by vip */
struct vrrp_ip *vip_ptr = NULL;

View file

@ -50,11 +50,6 @@
#include "linux/types.h"
#define VRRP_MGROUP4 "224.0.0.18"
#define VRRP_MGROUP6 "ff02::12"
#define VRRP_TTL 255
static inline void vrrp_net_invalidate_buffer(struct vrrp_net *vnet);

View file

@ -242,7 +242,7 @@ int vrrp_options(struct vrrp *vrrp, struct vrrp_net *vnet, int argc,
/* default adv int */
if ((vrrp->version == RFC3768) && (vrrp->adv_int == 0))
vrrp->adv_int = 1;
if ((vrrp->version == RFC5798) && (vrrp->adv_int == 0))
else if ((vrrp->version == RFC5798) && (vrrp->adv_int == 0))
vrrp->adv_int = 100;
/* Get IP addresse from interface name */

View file

@ -72,15 +72,15 @@ int vrrp_state_backup(struct vrrp *vrrp, struct vrrp_net *vnet)
char straddr[INET6_ADDRSTRLEN];
switch (event) {
case TIMER:
case TIMER: /* TIMER expired */
log_notice("vrid %d :: %s", vrrp->vrid,
"masterdown_timer expired");
vrrp_state_goto_master(vrrp, vnet);
break;
case PKT: /* valid PKT adv */
/* Must be impossible */
case PKT: /* PKT received */
/* Must be impossible, invalid received adv buffer */
if (vrrp_adv_get_version(vnet) == 0) {
log_error("vrid %d :: %s", vrrp->vrid,
"recv buffer empty !?");
@ -120,13 +120,6 @@ int vrrp_state_backup(struct vrrp *vrrp, struct vrrp_net *vnet)
vrrp->master_adv_int =
vrrp_adv_get_advint(vnet);
#ifdef DEBUG
print_buf_hexa("hexa master_adv_int",
&vrrp->master_adv_int, sizeof(uint16_t));
#endif
VRRP_SET_MASTERDOWN_TIMER(vrrp);
break;
}
@ -166,7 +159,6 @@ int vrrp_state_backup(struct vrrp *vrrp, struct vrrp_net *vnet)
return event;
}
/**
* vrrp_state_master() - handle master state
*/
@ -175,14 +167,15 @@ int vrrp_state_master(struct vrrp *vrrp, struct vrrp_net *vnet)
int event = vrrp_net_listen(vnet, vrrp);
switch (event) {
case TIMER:
case TIMER: /* TIMER expired */
/* adv_timer expired, time to send another */
log_info("vrid %d :: %s", vrrp->vrid, "adv_timer expired");
vrrp_adv_send(vnet);
VRRP_SET_ADV_TIMER(vrrp);
break;
case PKT:
case PKT: /* PKT received */
/* Must be impossible, invalid adv received buffer */
if (vrrp_adv_get_version(vnet) == 0) {
log_error("vrid %d :: %s", vrrp->vrid,
"recv buffer empty !?");
@ -320,6 +313,7 @@ static int vrrp_state_goto_backup(struct vrrp *vrrp, struct vrrp_net *vnet)
if (previous_state != INIT)
vrrp_exec(vrrp, vnet, vrrp->state);
/* RFC5798, use of master_adv_int */
if (vrrp->version == RFC5798) {
if (previous_state == INIT)
vrrp->master_adv_int = vrrp->adv_int;

View file

@ -83,11 +83,13 @@ int vrrp_timer_set(struct vrrp_timer *timer, time_t delay, long delay_cs)
timer->ts.tv_sec += delay;
timer->ts.tv_nsec += delay_cs * CENTUL;
#ifdef DEBUG
log_debug("delay %ld", delay);
log_debug("delay_cs %ld", delay_cs);
log_debug("timer->ts.tv_sec %ld", timer->ts.tv_sec);
log_debug("timer->ts.tv_nsec %ld", timer->ts.tv_nsec);
#endif /* DEBUG */
/* reset delta */
timer->delta.tv_sec = 0;
@ -148,8 +150,10 @@ int vrrp_timer_update(struct vrrp_timer *timer)
timer->ts.tv_sec = ts.tv_sec + timer->delta.tv_sec;
timer->ts.tv_nsec = ts.tv_nsec + timer->delta.tv_nsec;
#ifdef DEBUG
log_debug("timer->ts.tv_sec %ld", timer->ts.tv_sec);
log_debug("timer->ts.tv_nsec %ld", timer->ts.tv_nsec);
#endif /* DEBUG */
return 0;
}

View file

@ -48,7 +48,6 @@ int vrrp_timer_update(struct vrrp_timer *timer);
int vrrp_timer_is_expired(struct vrrp_timer *timer);
/* Specific VRRP timer macros */
#define SKEW_TIME( v ) \
( (256 - v->priority) * \
(v->version==3?v->master_adv_int:1) / 256 )