zoukankan      html  css  js  c++  java
  • Android : 有线DHCP信息保存到属性值

    修改源码路径:frameworksaseservices etjavaandroid etdhcpDhcpClient.java

    1、定义对应属性变量:

        // Patch Begin - Sheldon
        private static final String PROPERTY_DHCPCLIENT_IP      = "dhcp.eth0.ipaddress";
        private static final String PROPERTY_DHCPCLIENT_MASK    = "dhcp.eth0.mask";
        private static final String PROPERTY_DHCPCLIENT_GATEWAY = "dhcp.eth0.gateway";
        private static final String PROPERTY_DHCPCLIENT_DNS1    = "dhcp.eth0.dns1";
        private static final String PROPERTY_DHCPCLIENT_DNS2    = "dhcp.eth0.dns2";
        // Patch end

    2.从acceptDhcpResults方法的results参数中提取IP地址、子网掩码、网关、DNS等信息。注:子网掩码是通过PrefixLength转换所得。

        private void acceptDhcpResults(DhcpResults results, String msg) {
            mDhcpLease = results;
            mOffer = null;
            Log.d(TAG, msg + " lease: " + mDhcpLease);
    
            // Patch Begin - Sheldon
            if (mIfaceName != null && (mIfaceName.equals("eth0") || mIfaceName.equals("veth0")))
            {
                try {
                        String ipAddr  = results.ipAddress.getAddress().getHostAddress();
                        int preFixLen  = results.ipAddress.getPrefixLength();
    
                        // Convert PrefixLength to subnet mask
                        int value = 0xffffffff << (32 - preFixLen);
                        byte[] bytes = new byte[]{ 
                                (byte)(value >> 24), (byte)(value >> 16 & 0xff), (byte)(value >> 8 & 0xff), (byte)(value & 0xff)};
                        InetAddress netAddr = InetAddress.getByAddress(bytes);
                        String subNetMask  = netAddr.getHostAddress();
    
                        String gateWay = deleteCharString(results.gateway.toString(), '/');
                        String dns1    = deleteCharString(results.dnsServers.get(0).toString(), '/');
                        String dns2    = deleteCharString(results.dnsServers.get(1).toString(), '/');
    
                        SystemProperties.set(PROPERTY_DHCPCLIENT_IP, ipAddr);
                        SystemProperties.set(PROPERTY_DHCPCLIENT_MASK, subNetMask);
                        SystemProperties.set(PROPERTY_DHCPCLIENT_GATEWAY, gateWay);
                        SystemProperties.set(PROPERTY_DHCPCLIENT_DNS1, dns1);
                        SystemProperties.set(PROPERTY_DHCPCLIENT_DNS2, dns2);
               
                } catch (Exception e) {
                        e.printStackTrace();
                }
            }
            //Patch end
    
            notifySuccess();
        }
  • 相关阅读:
    linux内核——进程切换宏switch_to
    android源码目录结构详解
    SRM 390(1-250pt)
    SRM 391(1-250pt)
    CodeForces 221(div 2)
    SRM 407(1-250pt, 1-500pt)
    SRM 392(1-250pt)
    SRM 393(1-250pt)
    CodeForces 220(div 2)
    SRM 406(1-250pt, 1-500pt)
  • 原文地址:https://www.cnblogs.com/blogs-of-lxl/p/12202939.html
Copyright © 2011-2022 走看看