Lines Matching defs:kr_state
58 } kr_state;
116 kr_state.fib_sync = fs;
117 kr_state.rdomain = rdomain;
118 kr_state.fib_prio = fib_prio;
120 if ((kr_state.fd = socket(AF_ROUTE,
127 if (setsockopt(kr_state.fd, SOL_SOCKET, SO_USELOOPBACK,
137 if (setsockopt(kr_state.fd, AF_ROUTE, ROUTE_PRIOFILTER, &filter_prio,
143 if (setsockopt(kr_state.fd, AF_ROUTE, ROUTE_FLAGFILTER, &filter_flags,
151 if (getsockopt(kr_state.fd, SOL_SOCKET, SO_RCVBUF,
157 setsockopt(kr_state.fd, SOL_SOCKET, SO_RCVBUF,
162 kr_state.pid = getpid();
163 kr_state.rtseq = 1;
173 event_set(&kr_state.ev, kr_state.fd, EV_READ | EV_PERSIST,
175 event_add(&kr_state.ev, NULL);
177 kr_state.reload_state = KR_RELOAD_IDLE;
178 evtimer_set(&kr_state.reload, kr_fib_reload_timer, NULL);
243 if (send_rtmsg(kr_state.fd, action, &kroute[i]) == -1)
256 kn->r.priority = kr_state.fib_prio;
280 kr = kroute_find(&kroute->prefix, kroute->prefixlen, kr_state.fib_prio);
310 if (kr->r.priority != kr_state.fib_prio)
315 if (send_rtmsg(kr_state.fd, RTM_DELETE, &kr->r) == -1)
330 kr_state.fib_prio)) == NULL)
356 if (kr_state.fib_sync == 1) /* already coupled */
359 kr_state.fib_sync = 1;
362 if (kr->r.priority == kr_state.fib_prio)
364 send_rtmsg(kr_state.fd, RTM_ADD, &kn->r);
375 if (kr_state.fib_sync == 0) /* already decoupled */
379 if (kr->r.priority == kr_state.fib_prio)
381 send_rtmsg(kr_state.fd, RTM_DELETE, &kn->r);
383 kr_state.fib_sync = 0;
391 if (kr_state.reload_state == KR_RELOAD_FETCH) {
393 kr_state.reload_state = KR_RELOAD_HOLD;
396 kr_state.reload_state = KR_RELOAD_IDLE;
409 if (evtimer_add(&kr_state.reload, &tv) == -1)
420 kr_state.fib_serial++;
431 if (kr->serial != kr_state.fib_serial) {
433 if (kr->r.priority == kr_state.fib_prio) {
434 kr->serial = kr_state.fib_serial;
435 if (send_rtmsg(kr_state.fd,
455 log_info("fib priority changed from %hhu to %hhu", kr_state.fib_prio,
458 kr_state.fib_prio = fib_prio;
634 int filter_prio = kr_state.fib_prio;
643 if (setsockopt(kr_state.fd, AF_ROUTE, ROUTE_PRIOFILTER, &filter_prio,
737 kr->serial = kr_state.fib_serial;
1126 if (kr_state.fib_sync == 0)
1133 hdr.rtm_priority = kr_state.fib_prio;
1134 hdr.rtm_tableid = kr_state.rdomain; /* rtableid */
1139 hdr.rtm_seq = kr_state.rtseq++; /* overflow doesn't matter */
1262 mib[6] = kr_state.rdomain; /* rtableid */
1325 if ((n = read(kr_state.fd, &buf, sizeof(buf))) == -1) {
1387 if (rtm->rtm_tableid != kr_state.rdomain)
1391 rtm->rtm_pid != kr_state.pid) /* caused by us */
1404 flags = (prio == kr_state.fib_prio) ?
1472 if ((mpath || prio == kr_state.fib_prio) &&
1505 kr->serial = kr_state.fib_serial;
1522 if (rtm->rtm_priority == kr_state.fib_prio) {
1525 rv = send_rtmsg(kr_state.fd,
1597 if (kr_state.reload_state == KR_RELOAD_IDLE) {
1603 kr_state.reload_state ==
1606 kr_state.reload_state = KR_RELOAD_FETCH;