美文网首页
pppoe-server源代码阅读

pppoe-server源代码阅读

作者: jrglinux | 来源:发表于2017-06-12 14:17 被阅读0次

    pppoe-server.c

    一、从main()函数入手:

    1、main()函数调用getopt()函数,进行命令参数词法分析

    getopt
    2、然后main()函数开始检查一些参数(好多参数,暂时不知道有何用),初始化random cookie,还有对session的操作
    3、打开所有的Interface接口,creat event selector,创建接口事件处理函数,调用InterfaceHandler
    event handler
    在进入InterfaceHandler之后,会经过一个过程:
    PADI
    PADO
    PADR
    PADS
    StartPPPD
    4、main()函数在InterfaceHandler整个调用过程后,开始UNIX Network Programming
    Unix network programming
    二、进入main()中的InterfaceHandler()
    InterfaceHandler

    InterfaceHandler()函数调用serverProcessPacket()函数

    三、serverProcessPacket()函数
    serverProcessPacket

    根据packet.code来选择处理函数


    image.png

    其中PPPoEPacket定义如下:


    PPPoEPacket定义 PPPoE codes
    四、processPADI函数

    在判断客户端发送的广播请求的address、session、MAC没有问题并能够提供客户端所需的service后,server主机准备发送PADO


    PADO准备

    最后调用sendPacket函数发送PADO包


    sendPacket

    五、processPADR函数
    当主机能够提供服务后,给客户端发送PADO,客户端选择一个能够提供服务的主机发送PADR包,当主机接收到PADR后,就可以准备发起一个PPP会话


    startPPPD

    六、startPPPD函数
    进入startPPPD后,又分为两种


    startPPPD

    一个是startPPPDLinuxKernelMode,另一个是startPPPDUserMode

    七、startPPPD之后
    不管是startPPPDLinuxKernelMode还是startPPPDUserMode,如果其过程顺利执行,到最后都是以下面两个函数结尾退出


    退出startPPPD

    相关文章

      网友评论

          本文标题:pppoe-server源代码阅读

          本文链接:https://www.haomeiwen.com/subject/arwyfxtx.html