Hi,
Here is the first patch towards adding RPKI/ROA support to OpenBGPd.
It aims at renaming variables & functions to prepare the ground for
bigger changes. Is it OK ?
Denis
diff -u bgpd.orig/control.c bgpd/control.c
--- bgpd.orig/control.c Fri Aug 15 18:21:53 2014
+++ bgpd/control.c Fri Aug 15 21:05:56 2014
@@ -282,7 +282,7 @@
IMSG_CTL_SHOW_NEIGHBOR,
0, 0, -1, p, sizeof(*p));
for (i = 1; i < Timer_Max; i++) {
- if (!timer_running(p, i, &d))
+ if (!peer_timer_running(p, i,
&d))
continue;
ct.type = i;
ct.val = d;
@@ -342,7 +342,7 @@
if (!p->conf.down) {
session_stop(p,
ERR_CEASE_ADMIN_RESET);
- timer_set(p, Timer_IdleHold,
+ peer_timer_set(p,
Timer_IdleHold,
SESSION_CLEAR_DELAY);
} else {
session_stop(p,
diff -u bgpd.orig/log.c bgpd/log.c
--- bgpd.orig/log.c Fri Aug 15 18:21:53 2014
+++ bgpd/log.c Fri Aug 15 21:05:56 2014
@@ -236,7 +236,7 @@
}
void
-log_statechange(struct peer *peer, enum session_state nstate,
+log_peer_statechange(struct peer *peer, enum session_state nstate,
enum session_events event)
{
char *p;
diff -u bgpd.orig/parse.y bgpd/parse.y
--- bgpd.orig/parse.y Fri Aug 15 18:21:53 2014
+++ bgpd/parse.y Fri Aug 15 21:06:57 2014
@@ -87,7 +87,7 @@
static struct filter_rule *curpeer_filter[2];
static struct filter_rule *curgroup_filter[2];
static struct listen_addrs *listen_addrs;
-static u_int32_t id;
+static u_int32_t peerid;
struct filter_peers_l {
struct filter_peers_l *next;
@@ -123,7 +123,7 @@
char *);
int add_rib(char *, u_int, u_int16_t);
struct rde_rib *find_rib(char *);
-int get_id(struct peer *);
+int get_peerid(struct peer *);
int merge_prefixspec(struct filter_prefix_l *,
struct filter_prefixlen *);
int expand_rule(struct filter_rule *, struct filter_peers_l *,
@@ -881,8 +881,8 @@
curpeer->conf.remote_addr.aid] == -1)
curpeer->conf.capabilities.mp[
curpeer->conf.remote_addr.aid] = 1;
- if (get_id(curpeer)) {
- yyerror("get_id failed");
+ if (get_peerid(curpeer)) {
+ yyerror("get_peerid failed");
YYERROR;
}
}
@@ -915,8 +915,8 @@
YYERROR;
}
free($2);
- if (get_id(curgroup)) {
- yyerror("get_id failed");
+ if (get_peerid(curgroup)) {
+ yyerror("get_peerid failed");
YYERROR;
}
}
@@ -2609,7 +2609,7 @@
peer_l_old = *xpeers;
curpeer = NULL;
curgroup = NULL;
- id = 1;
+ peerid = 1;
/* network list is always empty in the parent */
gnetconf = netconf = nc;
@@ -3205,7 +3205,7 @@
}
int
-get_id(struct peer *newpeer)
+get_peerid(struct peer *newpeer)
{
struct peer *p;
@@ -3225,12 +3225,13 @@
}
/* new one */
- for (; id < UINT_MAX / 2; id++) {
+ for (; peerid < UINT_MAX / 2; peerid++) {
for (p = peer_l_old; p != NULL &&
- p->conf.id != id && p->conf.groupid != id; p = p->next)
+ p->conf.id != peerid && p->conf.groupid != peerid;
+ p = p->next)
; /* nothing */
if (p == NULL) { /* we found a free id */
- newpeer->conf.id = id++;
+ newpeer->conf.id = peerid++;
return (0);
}
}
diff -u bgpd.orig/session.c bgpd/session.c
--- bgpd.orig/session.c Fri Aug 15 18:21:53 2014
+++ bgpd/session.c Fri Aug 15 21:10:30 2014
@@ -58,10 +58,11 @@
int setup_listeners(u_int *);
void init_conf(struct bgpd_config *);
void init_peer(struct peer *);
-void start_timer_holdtime(struct peer *);
-void start_timer_keepalive(struct peer *);
+void start_peer_timer_holdtime(struct peer *);
+void start_peer_timer_keepalive(struct peer *);
void session_close_connection(struct peer *);
-void change_state(struct peer *, enum session_state, enum session_events);
+void change_peer_state(struct peer *, enum session_state,
+ enum session_events);
int session_setup_socket(struct peer *);
void session_accept(int);
int session_connect(struct peer *);
@@ -199,7 +200,7 @@
u_int new_cnt;
u_int32_t ctl_queued;
struct passwd *pw;
- struct peer *p, **peer_l = NULL, *last, *next;
+ struct peer *p, **peer_l = NULL, *plast, *pnext;
struct mrt *m, *xm, **mrt_l = NULL;
struct pollfd *pfd = NULL;
struct ctl_conn *ctl_conn;
@@ -270,10 +271,10 @@
while (session_quit == 0) {
/* check for peers to be initialized or deleted */
- last = NULL;
+ plast = NULL;
if (!pending_reconf) {
- for (p = peers; p != NULL; p = next) {
- next = p->next;
+ for (p = peers; p != NULL; p = pnext) {
+ pnext = p->next;
/* cloned peer that idled out? */
if (p->template && (p->state == STATE_IDLE ||
p->state == STATE_ACTIVE) &&
@@ -289,7 +290,7 @@
if (p->conf.reconf_action == RECONF_REINIT) {
session_stop(p, ERR_CEASE_ADMIN_RESET);
if (!p->conf.down)
- timer_set(p, Timer_IdleHold, 0);
+ peer_timer_set(p,
Timer_IdleHold, 0);
}
/* deletion due? */
@@ -299,17 +300,17 @@
p->conf.demote_group[0] = 0;
session_stop(p, ERR_CEASE_PEER_UNCONF);
log_peer_warnx(&p->conf, "removed");
- if (last != NULL)
- last->next = next;
+ if (plast != NULL)
+ plast->next = pnext;
else
- peers = next;
- timer_remove_all(p);
+ peers = pnext;
+ peer_timer_remove_all(p);
free(p);
peer_cnt--;
continue;
}
p->conf.reconf_action = RECONF_NONE;
- last = p;
+ plast = p;
}
}
@@ -414,7 +415,7 @@
struct peer_timer *pt;
/* check timers */
- if ((pt = timer_nextisdue(p)) != NULL) {
+ if ((pt = peer_timer_nextisdue(p)) != NULL) {
switch (pt->type) {
case Timer_Hold:
bgp_fsm(p, EVNT_TIMER_HOLDTIME);
@@ -434,29 +435,29 @@
INTERVAL_IDLE_HOLD_INITIAL) {
p->IdleHoldTime =
INTERVAL_IDLE_HOLD_INITIAL;
- timer_stop(p,
+ peer_timer_stop(p,
Timer_IdleHoldReset);
p->errcnt = 0;
} else
- timer_set(p,
+ peer_timer_set(p,
Timer_IdleHoldReset,
p->IdleHoldTime);
break;
case Timer_CarpUndemote:
- timer_stop(p, Timer_CarpUndemote);
+ peer_timer_stop(p, Timer_CarpUndemote);
if (p->demoted &&
p->state == STATE_ESTABLISHED)
session_demote(p, -1);
break;
case Timer_RestartTimeout:
- timer_stop(p, Timer_RestartTimeout);
+ peer_timer_stop(p,
Timer_RestartTimeout);
session_graceful_stop(p);
break;
default:
fatalx("King Bula lost in time");
}
}
- if ((nextaction = timer_nextduein(p)) != -1 &&
+ if ((nextaction = peer_timer_nextduein(p)) != -1 &&
nextaction < timeout)
timeout = nextaction;
@@ -639,11 +640,11 @@
peer_cnt++;
- change_state(p, STATE_IDLE, EVNT_NONE);
+ change_peer_state(p, STATE_IDLE, EVNT_NONE);
if (p->conf.down)
- timer_stop(p, Timer_IdleHold); /* no autostart */
+ peer_timer_stop(p, Timer_IdleHold); /* no autostart
*/
else
- timer_set(p, Timer_IdleHold, 0); /* start ASAP */
+ peer_timer_set(p, Timer_IdleHold, 0); /* start ASAP */
/*
* on startup, demote if requested.
@@ -664,9 +665,9 @@
case STATE_IDLE:
switch (event) {
case EVNT_START:
- timer_stop(peer, Timer_Hold);
- timer_stop(peer, Timer_Keepalive);
- timer_stop(peer, Timer_IdleHold);
+ peer_timer_stop(peer, Timer_Hold);
+ peer_timer_stop(peer, Timer_Keepalive);
+ peer_timer_stop(peer, Timer_IdleHold);
/* allocate read buffer */
peer->rbuf = calloc(1, sizeof(struct ibuf_read));
@@ -688,14 +689,14 @@
peer->stats.last_sent_suberr = 0;
if (!peer->depend_ok)
- timer_stop(peer, Timer_ConnectRetry);
+ peer_timer_stop(peer, Timer_ConnectRetry);
else if (peer->passive || peer->conf.passive ||
peer->conf.template) {
- change_state(peer, STATE_ACTIVE, event);
- timer_stop(peer, Timer_ConnectRetry);
+ change_peer_state(peer, STATE_ACTIVE, event);
+ peer_timer_stop(peer, Timer_ConnectRetry);
} else {
- change_state(peer, STATE_CONNECT, event);
- timer_set(peer, Timer_ConnectRetry,
+ change_peer_state(peer, STATE_CONNECT, event);
+ peer_timer_set(peer, Timer_ConnectRetry,
conf->connectretry);
session_connect(peer);
}
@@ -714,24 +715,24 @@
case EVNT_CON_OPEN:
session_tcp_established(peer);
session_open(peer);
- timer_stop(peer, Timer_ConnectRetry);
+ peer_timer_stop(peer, Timer_ConnectRetry);
peer->holdtime = INTERVAL_HOLD_INITIAL;
- start_timer_holdtime(peer);
- change_state(peer, STATE_OPENSENT, event);
+ start_peer_timer_holdtime(peer);
+ change_peer_state(peer, STATE_OPENSENT, event);
break;
case EVNT_CON_OPENFAIL:
- timer_set(peer, Timer_ConnectRetry,
+ peer_timer_set(peer, Timer_ConnectRetry,
conf->connectretry);
session_close_connection(peer);
- change_state(peer, STATE_ACTIVE, event);
+ change_peer_state(peer, STATE_ACTIVE, event);
break;
case EVNT_TIMER_CONNRETRY:
- timer_set(peer, Timer_ConnectRetry,
+ peer_timer_set(peer, Timer_ConnectRetry,
conf->connectretry);
session_connect(peer);
break;
default:
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
}
break;
@@ -743,25 +744,25 @@
case EVNT_CON_OPEN:
session_tcp_established(peer);
session_open(peer);
- timer_stop(peer, Timer_ConnectRetry);
+ peer_timer_stop(peer, Timer_ConnectRetry);
peer->holdtime = INTERVAL_HOLD_INITIAL;
- start_timer_holdtime(peer);
- change_state(peer, STATE_OPENSENT, event);
+ start_peer_timer_holdtime(peer);
+ change_peer_state(peer, STATE_OPENSENT, event);
break;
case EVNT_CON_OPENFAIL:
- timer_set(peer, Timer_ConnectRetry,
+ peer_timer_set(peer, Timer_ConnectRetry,
conf->connectretry);
session_close_connection(peer);
- change_state(peer, STATE_ACTIVE, event);
+ change_peer_state(peer, STATE_ACTIVE, event);
break;
case EVNT_TIMER_CONNRETRY:
- timer_set(peer, Timer_ConnectRetry,
+ peer_timer_set(peer, Timer_ConnectRetry,
peer->holdtime);
- change_state(peer, STATE_CONNECT, event);
+ change_peer_state(peer, STATE_CONNECT, event);
session_connect(peer);
break;
default:
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
}
break;
@@ -771,42 +772,42 @@
/* ignore */
break;
case EVNT_STOP:
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_CON_CLOSED:
session_close_connection(peer);
- timer_set(peer, Timer_ConnectRetry,
+ peer_timer_set(peer, Timer_ConnectRetry,
conf->connectretry);
- change_state(peer, STATE_ACTIVE, event);
+ change_peer_state(peer, STATE_ACTIVE, event);
break;
case EVNT_CON_FATAL:
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_TIMER_HOLDTIME:
session_notification(peer, ERR_HOLDTIMEREXPIRED,
0, NULL, 0);
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_RCVD_OPEN:
- /* parse_open calls change_state itself on failure */
+ /* parse_open calls change_peer_state itself on failure
*/
if (parse_open(peer))
break;
session_keepalive(peer);
- change_state(peer, STATE_OPENCONFIRM, event);
+ change_peer_state(peer, STATE_OPENCONFIRM, event);
break;
case EVNT_RCVD_NOTIFICATION:
if (parse_notification(peer)) {
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
/* don't punish, capa negotiation */
- timer_set(peer, Timer_IdleHold, 0);
+ peer_timer_set(peer, Timer_IdleHold, 0);
peer->IdleHoldTime /= 2;
} else
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
default:
session_notification(peer,
ERR_FSM, ERR_FSM_UNEX_OPENSENT, NULL, 0);
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
}
break;
@@ -816,32 +817,32 @@
/* ignore */
break;
case EVNT_STOP:
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_CON_CLOSED:
case EVNT_CON_FATAL:
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_TIMER_HOLDTIME:
session_notification(peer, ERR_HOLDTIMEREXPIRED,
0, NULL, 0);
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_TIMER_KEEPALIVE:
session_keepalive(peer);
break;
case EVNT_RCVD_KEEPALIVE:
- start_timer_holdtime(peer);
- change_state(peer, STATE_ESTABLISHED, event);
+ start_peer_timer_holdtime(peer);
+ change_peer_state(peer, STATE_ESTABLISHED, event);
break;
case EVNT_RCVD_NOTIFICATION:
parse_notification(peer);
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
default:
session_notification(peer,
ERR_FSM, ERR_FSM_UNEX_OPENCONFIRM, NULL, 0);
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
}
break;
@@ -851,38 +852,38 @@
/* ignore */
break;
case EVNT_STOP:
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_CON_CLOSED:
case EVNT_CON_FATAL:
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_TIMER_HOLDTIME:
session_notification(peer, ERR_HOLDTIMEREXPIRED,
0, NULL, 0);
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
case EVNT_TIMER_KEEPALIVE:
session_keepalive(peer);
break;
case EVNT_RCVD_KEEPALIVE:
- start_timer_holdtime(peer);
+ start_peer_timer_holdtime(peer);
break;
case EVNT_RCVD_UPDATE:
- start_timer_holdtime(peer);
+ start_peer_timer_holdtime(peer);
if (parse_update(peer))
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
else
- start_timer_holdtime(peer);
+ start_peer_timer_holdtime(peer);
break;
case EVNT_RCVD_NOTIFICATION:
parse_notification(peer);
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
default:
session_notification(peer,
ERR_FSM, ERR_FSM_UNEX_ESTABLISHED, NULL, 0);
- change_state(peer, STATE_IDLE, event);
+ change_peer_state(peer, STATE_IDLE, event);
break;
}
break;
@@ -890,21 +891,21 @@
}
void
-start_timer_holdtime(struct peer *peer)
+start_peer_timer_holdtime(struct peer *peer)
{
if (peer->holdtime > 0)
- timer_set(peer, Timer_Hold, peer->holdtime);
+ peer_timer_set(peer, Timer_Hold, peer->holdtime);
else
- timer_stop(peer, Timer_Hold);
+ peer_timer_stop(peer, Timer_Hold);
}
void
-start_timer_keepalive(struct peer *peer)
+start_peer_timer_keepalive(struct peer *peer)
{
if (peer->holdtime > 0)
- timer_set(peer, Timer_Keepalive, peer->holdtime / 3);
+ peer_timer_set(peer, Timer_Keepalive, peer->holdtime / 3);
else
- timer_stop(peer, Timer_Keepalive);
+ peer_timer_stop(peer, Timer_Keepalive);
}
void
@@ -918,7 +919,7 @@
}
void
-change_state(struct peer *peer, enum session_state state,
+change_peer_state(struct peer *peer, enum session_state state,
enum session_events event)
{
struct mrt *mrt;
@@ -946,11 +947,11 @@
if (peer->IdleHoldTime == 0)
peer->IdleHoldTime = INTERVAL_IDLE_HOLD_INITIAL;
peer->holdtime = INTERVAL_HOLD_INITIAL;
- timer_stop(peer, Timer_ConnectRetry);
- timer_stop(peer, Timer_Keepalive);
- timer_stop(peer, Timer_Hold);
- timer_stop(peer, Timer_IdleHold);
- timer_stop(peer, Timer_IdleHoldReset);
+ peer_timer_stop(peer, Timer_ConnectRetry);
+ peer_timer_stop(peer, Timer_Keepalive);
+ peer_timer_stop(peer, Timer_Hold);
+ peer_timer_stop(peer, Timer_IdleHold);
+ peer_timer_stop(peer, Timer_IdleHoldReset);
session_close_connection(peer);
msgbuf_clear(&peer->wbuf);
free(peer->rbuf);
@@ -958,7 +959,7 @@
bzero(&peer->capa.peer, sizeof(peer->capa.peer));
if (event != EVNT_STOP) {
- timer_set(peer, Timer_IdleHold, peer->IdleHoldTime);
+ peer_timer_set(peer, Timer_IdleHold,
peer->IdleHoldTime);
if (event != EVNT_NONE &&
peer->IdleHoldTime < MAX_IDLE_HOLD/2)
peer->IdleHoldTime *= 2;
@@ -968,7 +969,7 @@
(event == EVNT_CON_CLOSED ||
event == EVNT_CON_FATAL)) {
/* don't punish graceful restart */
- timer_set(peer, Timer_IdleHold, 0);
+ peer_timer_set(peer, Timer_IdleHold, 0);
peer->IdleHoldTime /= 2;
session_graceful_restart(peer);
} else
@@ -989,11 +990,11 @@
/* do the graceful restart dance */
session_graceful_restart(peer);
peer->holdtime = INTERVAL_HOLD_INITIAL;
- timer_stop(peer, Timer_ConnectRetry);
- timer_stop(peer, Timer_Keepalive);
- timer_stop(peer, Timer_Hold);
- timer_stop(peer, Timer_IdleHold);
- timer_stop(peer, Timer_IdleHoldReset);
+ peer_timer_stop(peer, Timer_ConnectRetry);
+ peer_timer_stop(peer, Timer_Keepalive);
+ peer_timer_stop(peer, Timer_Hold);
+ peer_timer_stop(peer, Timer_IdleHold);
+ peer_timer_stop(peer, Timer_IdleHoldReset);
session_close_connection(peer);
msgbuf_clear(&peer->wbuf);
bzero(&peer->capa.peer, sizeof(peer->capa.peer));
@@ -1006,9 +1007,9 @@
case STATE_OPENCONFIRM:
break;
case STATE_ESTABLISHED:
- timer_set(peer, Timer_IdleHoldReset, peer->IdleHoldTime);
+ peer_timer_set(peer, Timer_IdleHoldReset, peer->IdleHoldTime);
if (peer->demoted)
- timer_set(peer, Timer_CarpUndemote,
+ peer_timer_set(peer, Timer_CarpUndemote,
INTERVAL_HOLD_DEMOTED);
session_up(peer);
break;
@@ -1016,7 +1017,7 @@
break;
}
- log_statechange(peer, state, event);
+ log_peer_statechange(peer, state, event);
LIST_FOREACH(mrt, &mrthead, entry) {
if (!(mrt->type == MRT_ALL_IN || mrt->type == MRT_ALL_OUT))
continue;
@@ -1052,7 +1053,7 @@
p = getpeerbyip((struct sockaddr *)&cliaddr);
if (p != NULL && p->state == STATE_IDLE && p->errcnt < 2) {
- if (timer_running(p, Timer_IdleHold, NULL)) {
+ if (peer_timer_running(p, Timer_IdleHold, NULL)) {
/* fast reconnect after clear */
p->passive = 1;
bgp_fsm(p, EVNT_START);
@@ -1107,7 +1108,7 @@
} else if (p != NULL && p->state == STATE_ESTABLISHED &&
p->capa.neg.grestart.restart == 2) {
/* first do the graceful restart dance */
- change_state(p, STATE_CONNECT, EVNT_CON_CLOSED);
+ change_peer_state(p, STATE_CONNECT, EVNT_CON_CLOSED);
/* then do part of the open dance */
goto open;
} else {
@@ -1562,7 +1563,7 @@
return;
}
- start_timer_keepalive(p);
+ start_peer_timer_keepalive(p);
p->stats.msg_sent_keepalive++;
}
@@ -1597,7 +1598,7 @@
return;
}
- start_timer_keepalive(p);
+ start_peer_timer_keepalive(p);
p->stats.msg_sent_update++;
}
@@ -1699,7 +1700,7 @@
{
u_int8_t i;
- timer_set(p, Timer_RestartTimeout, p->capa.neg.grestart.timeout);
+ peer_timer_set(p, Timer_RestartTimeout, p->capa.neg.grestart.timeout);
for (i = 0; i < AID_MAX; i++) {
if (p->capa.neg.grestart.flags[i] & CAPA_GR_PRESENT) {
@@ -2036,7 +2037,7 @@
rversion = BGP_VERSION;
session_notification(peer, ERR_OPEN, ERR_OPEN_VERSION,
&rversion, sizeof(rversion));
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
return (-1);
}
@@ -2053,7 +2054,7 @@
"peer requests unacceptable holdtime %u", holdtime);
session_notification(peer, ERR_OPEN, ERR_OPEN_HOLDTIME,
NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
return (-1);
}
@@ -2074,7 +2075,7 @@
ntohl(bgpid));
session_notification(peer, ERR_OPEN, ERR_OPEN_BGPID,
NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
return (-1);
}
peer->remote_bgpid = bgpid;
@@ -2086,7 +2087,7 @@
log_peer_warnx(&peer->conf,
"corrupt OPEN message received: length mismatch");
session_notification(peer, ERR_OPEN, 0, NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
return (-1);
}
@@ -2096,7 +2097,7 @@
log_peer_warnx(&peer->conf,
"corrupt OPEN message received, len wrong");
session_notification(peer, ERR_OPEN, 0, NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
return (-1);
}
memcpy(&op_type, p, sizeof(op_type));
@@ -2111,7 +2112,7 @@
"corrupt OPEN message received, len wrong");
session_notification(peer, ERR_OPEN, 0,
NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE,
EVNT_RCVD_OPEN);
return (-1);
}
op_val = p;
@@ -2126,7 +2127,7 @@
&as) == -1) {
session_notification(peer, ERR_OPEN, 0,
NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE,
EVNT_RCVD_OPEN);
return (-1);
}
break;
@@ -2144,8 +2145,8 @@
"parameter: type %u", op_type);
session_notification(peer, ERR_OPEN, ERR_OPEN_OPT,
NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
- timer_set(peer, Timer_IdleHold, 0); /* no punish */
+ change_peer_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ peer_timer_set(peer, Timer_IdleHold, 0); /* no
punish */
peer->IdleHoldTime /= 2;
return (-1);
}
@@ -2164,7 +2165,7 @@
log_peer_warnx(&peer->conf, "peer sent wrong AS %s",
log_as(as));
session_notification(peer, ERR_OPEN, ERR_OPEN_AS, NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
return (-1);
}
@@ -2172,7 +2173,7 @@
log_peer_warnx(&peer->conf,
"capability negotiation calculation failed");
session_notification(peer, ERR_OPEN, 0, NULL, 0);
- change_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
+ change_peer_state(peer, STATE_IDLE, EVNT_RCVD_OPEN);
return (-1);
}
@@ -2554,7 +2555,7 @@
struct mrt xmrt;
struct mrt *mrt;
struct peer_config *pconf;
- struct peer *p, *next;
+ struct peer *p, *pnext;
struct listen_addr *la, *nla;
struct kif *kif;
u_char *data;
@@ -2711,8 +2712,8 @@
conf->connectretry = nconf->connectretry;
/* add new peers */
- for (p = npeers; p != NULL; p = next) {
- next = p->next;
+ for (p = npeers; p != NULL; p = pnext) {
+ pnext = p->next;
p->next = peers;
peers = p;
}
@@ -2883,7 +2884,7 @@
case ERR_CEASE_MAX_PREFIX:
bgp_fsm(p, EVNT_STOP);
if (p->conf.max_prefix_restart)
- timer_set(p, Timer_IdleHold, 60
*
+ peer_timer_set(p,
Timer_IdleHold, 60 *
p->conf.max_prefix_restart);
break;
default:
@@ -2918,7 +2919,7 @@
aid2str(aid));
p->capa.neg.grestart.flags[aid] &=
~CAPA_GR_RESTARTING;
- timer_stop(p, Timer_RestartTimeout);
+ peer_timer_stop(p, Timer_RestartTimeout);
/* signal back to RDE to cleanup stale routes */
if (imsg_compose(ibuf_rde,
diff -u bgpd.orig/session.h bgpd/session.h
--- bgpd.orig/session.h Fri Aug 15 18:21:53 2014
+++ bgpd/session.h Fri Aug 15 21:05:56 2014
@@ -38,6 +38,26 @@
#define MSG_PROCESS_LIMIT 25
#define SESSION_CLEAR_DELAY 5
+enum Timer {
+ Timer_None,
+ Timer_ConnectRetry,
+ Timer_Keepalive,
+ Timer_Hold,
+ Timer_IdleHold,
+ Timer_IdleHoldReset,
+ Timer_CarpUndemote,
+ Timer_RestartTimeout,
+ Timer_Max
+};
+
+struct peer_timer {
+ TAILQ_ENTRY(peer_timer) entry;
+ enum Timer type;
+ time_t val;
+};
+
+TAILQ_HEAD(peer_timer_head, peer_timer);
+
enum session_state {
STATE_NONE,
STATE_IDLE,
@@ -173,26 +193,6 @@
u_int8_t last_sent_suberr;
};
-enum Timer {
- Timer_None,
- Timer_ConnectRetry,
- Timer_Keepalive,
- Timer_Hold,
- Timer_IdleHold,
- Timer_IdleHoldReset,
- Timer_CarpUndemote,
- Timer_RestartTimeout,
- Timer_Max
-};
-
-struct peer_timer {
- TAILQ_ENTRY(peer_timer) entry;
- enum Timer type;
- time_t val;
-};
-
-TAILQ_HEAD(peer_timer_head, peer_timer);
-
struct peer {
struct peer_config conf;
struct peer_stats stats;
@@ -258,7 +258,7 @@
/* log.c */
char *log_fmt_peer(const struct peer_config *);
-void log_statechange(struct peer *, enum session_state,
+void log_peer_statechange(struct peer *, enum session_state,
enum session_events);
void log_notification(const struct peer *, u_int8_t, u_int8_t,
u_char *, u_int16_t, const char *);
@@ -303,11 +303,11 @@
/* timer.c */
time_t getmonotime(void);
-struct peer_timer *timer_get(struct peer *, enum Timer);
-struct peer_timer *timer_nextisdue(struct peer *);
-time_t timer_nextduein(struct peer *);
-int timer_running(struct peer *, enum Timer, time_t *);
-void timer_set(struct peer *, enum Timer, u_int);
-void timer_stop(struct peer *, enum Timer);
-void timer_remove(struct peer *, enum Timer);
-void timer_remove_all(struct peer *);
+struct peer_timer *peer_timer_get(struct peer *, enum Timer);
+struct peer_timer *peer_timer_nextisdue(struct peer *);
+time_t peer_timer_nextduein(struct peer *);
+int peer_timer_running(struct peer *, enum Timer, time_t
*);
+void peer_timer_set(struct peer *, enum Timer, u_int);
+void peer_timer_stop(struct peer *, enum Timer);
+void peer_timer_remove(struct peer *, enum Timer);
+void peer_timer_remove_all(struct peer *);
diff -u bgpd.orig/timer.c bgpd/timer.c
--- bgpd.orig/timer.c Fri Aug 15 18:21:53 2014
+++ bgpd/timer.c Fri Aug 15 21:05:56 2014
@@ -35,7 +35,7 @@
}
struct peer_timer *
-timer_get(struct peer *p, enum Timer timer)
+peer_timer_get(struct peer *p, enum Timer timer)
{
struct peer_timer *pt;
@@ -47,7 +47,7 @@
}
struct peer_timer *
-timer_nextisdue(struct peer *p)
+peer_timer_nextisdue(struct peer *p)
{
struct peer_timer *pt;
@@ -58,7 +58,7 @@
}
time_t
-timer_nextduein(struct peer *p)
+peer_timer_nextduein(struct peer *p)
{
struct peer_timer *pt;
@@ -68,9 +68,9 @@
}
int
-timer_running(struct peer *p, enum Timer timer, time_t *left)
+peer_timer_running(struct peer *p, enum Timer timer, time_t *left)
{
- struct peer_timer *pt = timer_get(p, timer);
+ struct peer_timer *pt = peer_timer_get(p, timer);
if (pt != NULL && pt->val > 0) {
if (left != NULL)
@@ -81,13 +81,13 @@
}
void
-timer_set(struct peer *p, enum Timer timer, u_int offset)
+peer_timer_set(struct peer *p, enum Timer timer, u_int offset)
{
- struct peer_timer *t, *pt = timer_get(p, timer);
+ struct peer_timer *t, *pt = peer_timer_get(p, timer);
if (pt == NULL) { /* have to create */
if ((pt = malloc(sizeof(*pt))) == NULL)
- fatal("timer_set");
+ fatal("peer_timer_set");
pt->type = timer;
} else {
if (pt->val == getmonotime() + (time_t)offset)
@@ -107,9 +107,9 @@
}
void
-timer_stop(struct peer *p, enum Timer timer)
+peer_timer_stop(struct peer *p, enum Timer timer)
{
- struct peer_timer *pt = timer_get(p, timer);
+ struct peer_timer *pt = peer_timer_get(p, timer);
if (pt != NULL) {
pt->val = 0;
@@ -119,9 +119,9 @@
}
void
-timer_remove(struct peer *p, enum Timer timer)
+peer_timer_remove(struct peer *p, enum Timer timer)
{
- struct peer_timer *pt = timer_get(p, timer);
+ struct peer_timer *pt = peer_timer_get(p, timer);
if (pt != NULL) {
TAILQ_REMOVE(&p->timers, pt, entry);
@@ -130,7 +130,7 @@
}
void
-timer_remove_all(struct peer *p)
+peer_timer_remove_all(struct peer *p)
{
struct peer_timer *pt;