PPPOE流程分析3---pppoe native程序包

来源:互联网 发布:js do while循环 编辑:程序博客网 时间:2024/06/06 07:06
1. 相关文件
主要源码目录是, android/external/ppp/pppoe, 其中核心的是4个shell script, 和一个bin
1.1 Android.mk
此编译脚本主要用来指明编译pppoe这个binary时的规则.
1.2 Script/Pppoe-connect
执行pppoe拨号脚本
1.3 Script/Pppoe-disconnect
杀掉pppoe程序掉本
1.3 Ip-up-pppoe
连接成功, 配置route, dns等信息
1.4 Ip-down-pppoe
连接断开, 删除route, dns等信息


2 Ip-up-pppoe
此文件在pppoe拨号成功后会被调用, 是被pppd程序调用, 主要功能是设置dns/local-ip/remote-ip/net-pppoe-reason/net-pppoe-interface/route, 核心脚本代码如下,
/system/bin/setprop "net.$NAME.dns1" "$DNS1"     // $NAME为ppp0, 设置dns1
/system/bin/setprop "net.$NAME.dns2" "$DNS2"    // 设置dns2
/system/bin/setprop "net.$NAME.local-ip" "$IPLOCAL"  // 设置本地IP
/system/bin/setprop "net.$NAME.remote-ip" "$IPREMOTE" // 设置远程服务器IP
/system/bin/setprop "net.pppoe.reason" "running" // 设置当前pppoe状态
/system/bin/setprop "net.pppoe.interface" "$1" // 设置当前pppoe网卡节点, ppp0
/system/bin/setprop "net.dns1" "$DNS1" // 设置默认dns1, 最终net.dns1和net.ppp0.dns1应该相同
/system/bin/setprop "net.dns2" "$DNS2" //  设置辅助dns2
#del the route table
// 下面这里比较重要, 首先要删除已经设置了的default route
while true
do
    i=`/system/bin/busybox route | /system/bin/busybox grep default -c`
    if /system/bin/busybox test $i = 0
    then
        break
    fi
    `/system/bin/busybox route del default`
done
#add the pppoe remote ip to route table
// 删除完成后, 设置pppoe的remote-ip和网卡接口为默认路由
/system/bin/busybox route add -net 0.0.0.0 gw "$IPREMOTE" netmask 0.0.0.0 dev "$NAME"
此脚本的调用我找了很久都没有发现, 后来还是问了下耕哥, 这块本来是他负责开发, 是在pppd程序中被调用, 按照他当时的介绍, vpn/3g dongle都会使用到pppd, pppoe和他们相似, 所以对于vpn会有一个ip-up-vpn, 对于3G dongle会有ip-up, 这些相关的脚本是放在了android/device/softwinner/common/rild目录下, 
1. 在android/device/softwinner/common/sw-common中指定了一些和3G data card 有关的文件, 列表如下, 耕哥说的pppoe中ip-up-pppoe和3G dongle相似, 应该就是这个意思了, 这里也有ip-down, ip-up等, 也都是各种脚本.
 16 #YUNOS BEGIN
 17 # 3G Data Card Configuration Flie
 18 #PRODUCT_COPY_FILES += \
 19 # device/softwinner/common/rild/ip-down:system/etc/ppp/ip-down \
 20 # device/softwinner/common/rild/ip-up:system/etc/ppp/ip-up \
 21 # device/softwinner/common/rild/call-pppd:system/etc/ppp/call-pppd \
 22 # device/softwinner/common/rild/3g_dongle.cfg:system/etc/3g_dongle.cfg \
 23 # device/softwinner/common/rild/usb_modeswitch:system/bin/usb_modeswitch \
 24 # device/softwinner/common/rild/usb_modeswitch.sh:system/bin/usb_modeswitch.sh \
 25 # device/softwinner/common/rild/apns-conf_sdk.xml:system/etc/apns-conf.xml \
 26 # device/softwin


shanxiaoxi@allwinnertech.com: 以前写在有道云笔记中, 在这里分享出来
原创粉丝点击