diff options
Diffstat (limited to 'zebra/kernel_socket.c')
-rw-r--r-- | zebra/kernel_socket.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index b5431d3e..17893a87 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -477,6 +477,12 @@ rtm_read (struct rt_msghdr *rtm) if (flags & RTF_STATIC) SET_FLAG (zebra_flags, ZEBRA_FLAG_STATIC); + /* This is a reject or blackhole route */ + if (flags & RTF_REJECT) + SET_FLAG (zebra_flags, ZEBRA_FLAG_REJECT); + if (flags & RTF_BLACKHOLE) + SET_FLAG (zebra_flags, ZEBRA_FLAG_BLACKHOLE); + if (dest.sa.sa_family == AF_INET) { struct prefix_ipv4 p; @@ -620,6 +626,9 @@ rtm_write (int message, /* Additional flags. */ if (zebra_flags & ZEBRA_FLAG_BLACKHOLE) msg.rtm.rtm_flags |= RTF_BLACKHOLE; + if (zebra_flags & ZEBRA_FLAG_REJECT) + msg.rtm.rtm_flags |= RTF_REJECT; + #ifdef HAVE_SIN_LEN #define SOCKADDRSET(X,R) \ @@ -754,9 +763,8 @@ kernel_read (struct thread *thread) thread_add_read (master, kernel_read, NULL, sock); -#ifdef DEBUG - rtmsg_debug (&buf.r.rtm); -#endif /* DEBUG */ + if (IS_ZEBRA_DEBUG_KERNEL) + rtmsg_debug (&buf.r.rtm); rtm = &buf.r.rtm; @@ -779,6 +787,8 @@ kernel_read (struct thread *thread) break; #endif /* RTM_IFANNOUNCE */ default: + if (IS_ZEBRA_DEBUG_KERNEL) + zlog_info("Unprocessed RTM_type: %d", rtm->rtm_type); break; } return 0; |