Hi everyone,<div>    Recently, I have met a trouble that next hop of the update message sent from bgpd is ::(all zero) which should be 2001::64/64 . At last , I found the reason that  buf[4096] or buf[NL_PKT_BUF_SIZE] in function netlink_parse_info(zebra/rt_netlink.c) was overflow.This</div>
<div>result in zebra can&#39;t get the complete interfaces and addresses of the system. </div><div>    I looked into the linux kernel v3.6 and discovered the following  sections:</div><div><br></div><div>&quot;&quot;&quot;</div>
<div>     /*<div>214  *  skb should fit one page. This choice is good for headerless malloc.</div><div>215  *  But we should limit to 8K so that userspace does not have to</div><div>216  *  use enormous buffer sizes on recvmsg() calls just to avoid</div>
<div>217  *  MSG_TRUNC when PAGE_SIZE is very large.</div><div>218  */</div><div>219 #if PAGE_SIZE &lt; 8192UL</div><div>220 #define NLMSG_GOODSIZE  SKB_WITH_OVERHEAD(PAGE_SIZE)</div><div>221 #else</div><div>222 #define NLMSG_GOODSIZE  SKB_WITH_OVERHEAD(8192UL)</div>
<div>223 #endif</div><div><br></div><div>&quot;&quot;&quot;</div><div>  PAGE_SIZE on my platform is 64KB, in addtion I had added so many virtual interfaces.</div><div>  I changed buf[4096] to buf[8192], everything is normal.</div>
<div> So maybe we should be consistent with linux kernel.</div><div><br></div>-- <br>Go ahead!<br>
</div>