Re: route foreach

2017-02-15 Thread Mike Belopuhov
On 15 February 2017 at 19:08, Alexander Bluhm  wrote:
> Hi,
>
> Replace some manual loops with FOREACH macro.
>
> ok?
>
> bluhm
>

Looks good to me, OK mikeb



route foreach

2017-02-15 Thread Alexander Bluhm
Hi,

Replace some manual loops with FOREACH macro.

ok?

bluhm

Index: net/route.c
===
RCS file: /data/mirror/openbsd/cvs/src/sys/net/route.c,v
retrieving revision 1.350
diff -u -p -r1.350 route.c
--- net/route.c 5 Feb 2017 16:23:38 -   1.350
+++ net/route.c 15 Feb 2017 18:00:05 -
@@ -1556,8 +1556,7 @@ rt_timer_add(struct rtentry *rt, void (*
 * If there's already a timer with this action, destroy it before
 * we add a new one.
 */
-   for (r = LIST_FIRST(&rt->rt_timer); r != NULL;
-r = LIST_NEXT(r, rtt_link)) {
+   LIST_FOREACH(r, &rt->rt_timer, rtt_link) {
if (r->rtt_func == func) {
LIST_REMOVE(r, rtt_link);
TAILQ_REMOVE(&r->rtt_queue->rtq_head, r, rtt_next);
@@ -1598,8 +1597,7 @@ rt_timer_timer(void *arg)
current_time = time_uptime;
 
NET_LOCK(s);
-   for (rtq = LIST_FIRST(&rttimer_queue_head); rtq != NULL;
-rtq = LIST_NEXT(rtq, rtq_link)) {
+   LIST_FOREACH(rtq, &rttimer_queue_head, rtq_link) {
while ((r = TAILQ_FIRST(&rtq->rtq_head)) != NULL &&
(r->rtt_time + rtq->rtq_timeout) < current_time) {
LIST_REMOVE(r, rtt_link);
@@ -1620,7 +1618,7 @@ rt_timer_timer(void *arg)
 u_int16_t
 rtlabel_name2id(char *name)
 {
-   struct rt_label *label, *p = NULL;
+   struct rt_label *label, *p;
u_int16_tnew_id = 1;
 
if (!name[0])
@@ -1637,12 +1635,11 @@ rtlabel_name2id(char *name)
 * and take the first free slot we find. if there is none or the list
 * is empty, append a new entry at the end.
 */
-
-   if (!TAILQ_EMPTY(&rt_labels))
-   for (p = TAILQ_FIRST(&rt_labels); p != NULL &&
-   p->rtl_id == new_id; p = TAILQ_NEXT(p, rtl_entry))
-   new_id = p->rtl_id + 1;
-
+   TAILQ_FOREACH(p, &rt_labels, rtl_entry) {
+   if (p->rtl_id != new_id)
+   break;
+   new_id = p->rtl_id + 1;
+   }
if (new_id > LABELID_MAX)
return (0);
 
@@ -1697,8 +1694,7 @@ rtlabel_unref(u_int16_t id)
if (id == 0)
return;
 
-   for (p = TAILQ_FIRST(&rt_labels); p != NULL; p = next) {
-   next = TAILQ_NEXT(p, rtl_entry);
+   TAILQ_FOREACH_SAFE(p, &rt_labels, rtl_entry, next) {
if (id == p->rtl_id) {
if (--p->rtl_ref == 0) {
TAILQ_REMOVE(&rt_labels, p, rtl_entry);