diff options
Diffstat (limited to 'proto')
-rw-r--r-- | proto/babel/babel.c | 4 | ||||
-rw-r--r-- | proto/bgp/bgp.c | 19 | ||||
-rw-r--r-- | proto/bgp/bgp.h | 16 | ||||
-rw-r--r-- | proto/ospf/iface.c | 4 | ||||
-rw-r--r-- | proto/ospf/neighbor.c | 2 | ||||
-rw-r--r-- | proto/ospf/ospf.c | 2 | ||||
-rw-r--r-- | proto/radv/radv.c | 7 | ||||
-rw-r--r-- | proto/rip/rip.c | 4 | ||||
-rw-r--r-- | proto/rpki/rpki.c | 10 |
9 files changed, 33 insertions, 35 deletions
diff --git a/proto/babel/babel.c b/proto/babel/babel.c index 23746155..bab2e8b3 100644 --- a/proto/babel/babel.c +++ b/proto/babel/babel.c @@ -1367,7 +1367,7 @@ babel_iface_timer(timer *t) static inline void babel_iface_kick_timer(struct babel_iface *ifa) { - if (ifa->timer->expires > (now + 1)) + if (ifa->timer->expires TO_S > (now + 1)) tm_start(ifa->timer, 1); } @@ -1948,7 +1948,7 @@ babel_timer(timer *t) static inline void babel_kick_timer(struct babel_proto *p) { - if (p->timer->expires > (now + 1)) + if (p->timer->expires TO_S > (now + 1)) tm_start(p->timer, 1); } diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c index a8d5cf9d..dba7c875 100644 --- a/proto/bgp/bgp.c +++ b/proto/bgp/bgp.c @@ -103,6 +103,8 @@ #undef LOCAL_DEBUG +#include <stdlib.h> + #include "nest/bird.h" #include "nest/iface.h" #include "nest/protocol.h" @@ -324,8 +326,8 @@ bgp_start_timer(timer *t, int value) if (value) { /* The randomization procedure is specified in RFC 1771: 9.2.3.3 */ - t->randomize = value / 4; - tm_start(t, value - t->randomize); + int randomize = random() % ((value / 4) + 1); + tm_start(t, value - randomize); } else tm_stop(t); @@ -2006,17 +2008,18 @@ bgp_show_proto_info(struct proto *P) struct bgp_conn *oc = &p->outgoing_conn; if ((p->start_state < BSS_CONNECT) && - (p->startup_timer->expires)) + (tm_active(p->startup_timer))) cli_msg(-1006, " Error wait: %d/%d", - p->startup_timer->expires - now, p->startup_delay); + (int) tm_remains(p->startup_timer), p->startup_delay); if ((oc->state == BS_ACTIVE) && - (oc->connect_timer->expires)) + (tm_active(oc->connect_timer))) cli_msg(-1006, " Connect delay: %d/%d", - oc->connect_timer->expires - now, p->cf->connect_delay_time); + (int) tm_remains(oc->connect_timer), p->cf->connect_delay_time); - if (p->gr_active_num && p->gr_timer->expires) - cli_msg(-1006, " Restart timer: %d/-", p->gr_timer->expires - now); + if (p->gr_active_num && tm_active(p->gr_timer)) + cli_msg(-1006, " Restart timer: %d/-", + (int) tm_remains(p->gr_timer)); } else if (P->proto_state == PS_UP) { diff --git a/proto/bgp/bgp.h b/proto/bgp/bgp.h index 7ffcb68a..3b38c05f 100644 --- a/proto/bgp/bgp.h +++ b/proto/bgp/bgp.h @@ -210,10 +210,10 @@ struct bgp_conn { struct bgp_caps *local_caps; struct bgp_caps *remote_caps; - struct timer *connect_timer; - struct timer *hold_timer; - struct timer *keepalive_timer; - struct event *tx_ev; + timer *connect_timer; + timer *hold_timer; + timer *keepalive_timer; + event *tx_ev; u32 packets_to_send; /* Bitmap of packet types to be sent */ u32 channels_to_send; /* Bitmap of channels with packets to be sent */ u8 last_channel; /* Channel used last time for TX */ @@ -254,9 +254,9 @@ struct bgp_proto { struct bfd_request *bfd_req; /* BFD request, if BFD is used */ ip_addr source_addr; /* Local address used as an advertised next hop */ ip_addr link_addr; /* Link-local version of source_addr */ - struct event *event; /* Event for respawning and shutting process */ - struct timer *startup_timer; /* Timer used to delay protocol startup due to previous errors (startup_delay) */ - struct timer *gr_timer; /* Timer waiting for reestablishment after graceful restart */ + event *event; /* Event for respawning and shutting process */ + timer *startup_timer; /* Timer used to delay protocol startup due to previous errors (startup_delay) */ + timer *gr_timer; /* Timer waiting for reestablishment after graceful restart */ unsigned startup_delay; /* Time to delay protocol startup by due to errors */ bird_clock_t last_proto_error; /* Time of last error that leads to protocol stop */ u8 last_error_class; /* Error class of last error */ @@ -422,7 +422,7 @@ extern struct linpool *bgp_linpool; extern struct linpool *bgp_linpool2; -void bgp_start_timer(struct timer *t, int value); +void bgp_start_timer(timer *t, int value); void bgp_check_config(struct bgp_config *c); void bgp_error(struct bgp_conn *c, unsigned code, unsigned subcode, byte *data, int len); void bgp_close_conn(struct bgp_conn *c); diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index 98d48aa1..d1f9365e 100644 --- a/proto/ospf/iface.c +++ b/proto/ospf/iface.c @@ -715,9 +715,9 @@ ospf_iface_change_timer(timer *tm, uint val) if (!tm) return; - tm->recurrent = val; + tm->recurrent = val S; - if (tm->expires) + if (tm_active(tm)) tm_start(tm, val); } diff --git a/proto/ospf/neighbor.c b/proto/ospf/neighbor.c index b68ba6f4..64165e46 100644 --- a/proto/ospf/neighbor.c +++ b/proto/ospf/neighbor.c @@ -654,7 +654,7 @@ ospf_sh_neigh_info(struct ospf_neighbor *n) char etime[6]; int exp, sec, min; - exp = n->inactim->expires - now; + exp = tm_remains(n->inactim); sec = exp % 60; min = exp / 60; if (min > 59) diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c index 7ce6698e..a9081ed0 100644 --- a/proto/ospf/ospf.c +++ b/proto/ospf/ospf.c @@ -676,7 +676,7 @@ ospf_reconfigure(struct proto *P, struct proto_config *CF) p->asbr = new->asbr; p->ecmp = new->ecmp; p->tick = new->tick; - p->disp_timer->recurrent = p->tick; + p->disp_timer->recurrent = p->tick S; tm_start(p->disp_timer, 1); /* Mark all areas and ifaces */ diff --git a/proto/radv/radv.c b/proto/radv/radv.c index 2c0a23ad..34a3f473 100644 --- a/proto/radv/radv.c +++ b/proto/radv/radv.c @@ -154,12 +154,7 @@ radv_iface_new(struct radv_proto *p, struct iface *iface, struct radv_iface_conf add_tail(&p->iface_list, NODE ifa); - timer *tm = tm_new(pool); - tm->hook = radv_timer; - tm->data = ifa; - tm->randomize = 0; - tm->recurrent = 0; - ifa->timer = tm; + ifa->timer = tm_new_set(pool, radv_timer, ifa, 0, 0); struct object_lock *lock = olock_new(pool); lock->addr = IPA_NONE; diff --git a/proto/rip/rip.c b/proto/rip/rip.c index 820c5117..2583b49b 100644 --- a/proto/rip/rip.c +++ b/proto/rip/rip.c @@ -902,7 +902,7 @@ rip_timer(timer *t) static inline void rip_kick_timer(struct rip_proto *p) { - if (p->timer->expires > (now + 1)) + if (p->timer->expires TO_S > (now + 1)) tm_start(p->timer, 1); /* Or 100 ms */ } @@ -962,7 +962,7 @@ rip_iface_timer(timer *t) static inline void rip_iface_kick_timer(struct rip_iface *ifa) { - if (ifa->timer->expires > (now + 1)) + if (ifa->timer->expires TO_S > (now + 1)) tm_start(ifa->timer, 1); /* Or 100 ms */ } diff --git a/proto/rpki/rpki.c b/proto/rpki/rpki.c index 349d2f70..a331e45e 100644 --- a/proto/rpki/rpki.c +++ b/proto/rpki/rpki.c @@ -382,7 +382,7 @@ rpki_do_we_recv_prefix_pdu_in_last_seconds(struct rpki_cache *cache) * |End of Data| PDU and has run by some &ERROR is occurred. */ static void -rpki_refresh_hook(struct timer *tm) +rpki_refresh_hook(timer *tm) { struct rpki_cache *cache = tm->data; @@ -428,7 +428,7 @@ rpki_refresh_hook(struct timer *tm) * ends by reaching of &ESTABLISHED state again. */ static void -rpki_retry_hook(struct timer *tm) +rpki_retry_hook(timer *tm) { struct rpki_cache *cache = tm->data; @@ -473,7 +473,7 @@ rpki_retry_hook(struct timer *tm) * of the protocol. */ static void -rpki_expire_hook(struct timer *tm) +rpki_expire_hook(timer *tm) { struct rpki_cache *cache = tm->data; @@ -789,8 +789,8 @@ rpki_get_status(struct proto *P, byte *buf) static void rpki_show_proto_info_timer(const char *name, uint num, timer *t) { - if (t->expires) - cli_msg(-1006, " %-17s %us (remains %us)", name, num, tm_remains(t)); + if (tm_active(t)) + cli_msg(-1006, " %-17s %us (remains %ds)", name, num, (int) tm_remains(t)); else cli_msg(-1006, " %-17s ---", name); } |