|
void dsr_options_fragment(struct sk_buff * skb)
{
unsigned char * optptr = skb->nh.raw;//
struct ip_options * opt = &(IPCB(skb)->opt
int l = opt->optlen;
int optlen;
while (l > 0)
switch (*optptr) {
case IPOPT_END:
return;
case IPOPT_NOOP:
l--;
optptr++;
continue;
}
optlen = optptr[1];
if (optlen<2 || optlen>l)
return;
if (!IPOPT_COPIED(*optptr))
memset(optptr, IPOPT_NOOP, optlen);
l -= optlen;
optptr += optlen;
}
opt->ts = 0;
opt->rr = 0;
opt->rr_needaddr = 0;
opt->ts_needaddr = 0;
opt->ts_needtime = 0;
return;
}
哪位高手,帮忙解释一下上面的函数什么意思做什么用,函数运行结果是什么, |
|