📄 ipredirect.c
字号:
/* ipredirect.c - ipredirect */#include <conf.h>#include <kernel.h>#include <network.h>struct route *rtget(IPaddr, Bool);int rtfree(struct route *);IPaddr netmask(IPaddr);/*------------------------------------------------------------------------ * ipredirect - send redirects, if needed *------------------------------------------------------------------------ */voidipredirect(struct ep *pep, unsigned ifn, struct route *prt){ struct ip *pip = (struct ip *)pep->ep_data; struct route *tprt; int rdtype, isonehop; IPaddr nmask; /* network part's mask */ if (ifn == NI_LOCAL || ifn != prt->rt_ifnum) return; tprt = rtget(pip->ip_src, RTF_LOCAL); if (!tprt) return; isonehop = tprt->rt_metric == 0; rtfree(tprt); if (!isonehop) return; /* got one... */ nmask = netmask(prt->rt_net); /* get the default net mask */ if (prt->rt_mask == nmask) rdtype = ICC_NETRD; else rdtype = ICC_HOSTRD; icmp(ICT_REDIRECT, rdtype, pip->ip_src, pep, (void *)prt->rt_gw);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -