• ip_srcroute函数


    当响应某个分组时,I C M P和标准的运输层协议必须把分组带的任意源路由逆转。逆转源
    路由是通过i p _ s r c r o u t e保存的路由构造的。

    7 7 7 - 7 8 3 i p _ s r c r o u t e把保存在i p _ s r c r t结构中的源路由逆转后,
    如果 i p _ n h o p s 是 0,则没有保存的路由,所以
    i p _ s r c r o u t e返回一个指针。
    当一个无效分组到达时, i p i n t r把i p _ n h o p s清零。运输层
    协议必须调用i p _ s r c r o u t e,并在下一个分组到达之前自己保存逆转后的路由。正
    如以前我们注意到的,这样做是正确的,因为 i p i n t r在处理分组时,在 I P输入队列的
    下一个分组被处理之前都会调用运输层 ( T C P或U D P )的。
    为源路由分配存储器缓存
    7 8 4 - 7 8 6 如果i p _ n h o p s非0,i p _ s r c r o u t e就分配一个m b u f,并把m _ l e n设置成足够大,
    以便包含第一跳目的地、选项首部信息 (O P T S I Z)以及逆转后的路由。如果分配失败,则返回
    一个空指针,跟没有源路由一样。
    p被初始化为指向到达路由的末尾,i p _ s r c r o u t e把最后记录的地址复制到m b u f的前面,
    在这里它为外出的第一跳目的地开始逆转后的路由。然后该函数把一份 N O P选项和
    源路由信息复制到m b u f中。
    8 0 5 - 8 1 8 W h i l e循环把其余的IP 地址从源路由中以相反的顺序复制到 m b u f中。路由的最
    后一个地址被设置成到达分组中被 s a v e _ r t e放在i p _ s r c r t . d s t中的源站地址。返回一个
    指向m b u f的指针。

  • 相关阅读:
    Redis 启动失败
    Java本机直接内存溢出
    Java元数据区域(MetaSpace)OOM
    Java虚拟机本地方法栈溢出例子
    Java堆溢出实例
    C# DllImport CallingConvention选择
    光源选型
    条型光的光路分析
    VS安装包官方下载网址
    win7装.net framework4.6注意事项
  • 原文地址:https://www.cnblogs.com/momenglin/p/11518546.html
Copyright © 2020-2023  润新知