在Android中分配Wifi Direct Group Owner的IP地址

Mic*_*kin 7 android jailbreak wifi-direct mesh-network android-kernel

我正在使用Wifi Direct和Wifi构建一个Android设备网格.

我的基本方案如下:

1)每个节点使用该WifiP2pManager.createGroup()方法构建Wifi直接组所有者(GO)接入点.然后它通过它做广告WifiP2pManager.addLocalService().

2)每个节点还扫描其他节点WifiP2pManager.discoverServices().当它发现另一个节点连接到一个使用常规的传统的无线上网节点: wifiManager.disconnect(),wifiManager.enableNetwork(),和wifiManager.reconnect().

3)更新路由表和ipTables以允许流量转发到正确的目的地.这需要root权限.

此技术的问题在于WifiP2p为每个组所有者分配相同的地址,192.168.49.1并使用192.168.49.0/24DHCP中的池向加入组所有者的设备发出地址. 因此,网格将无法在多跳上路由流量,因为所有链路都具有相同的IP空间. 已经提出了一些技术来克服网络之间的这种切换(使用存储转发移动包),使用IP广播一次通过多个链路发送,以及修改WifiP2p以发布不同的地址.我正在研究修改WifiP2p实现的最后一个选项.

什么库将IP块分配给192.168.49.1Android中的Wifi Direct Group Owner?

在Android 4.0中,它直接在WifiP2pService.java第155和156行分配:

155 | private static final String[] DHCP_RANGE = {"192.168.49.2", "192.168.49.254"};
156 | private static final String SERVER_ADDRESS = "192.168.49.1";
Run Code Online (Sandbox Code Playgroud)

从Android 5.0开始,该库已被弃用.我已经跟踪了当前的实现,直到它离开Java并开始执行C库. 这是我需要你的帮助来了解要查看哪个C库的地方.

免责声明:据我所知,我将在自定义内核领域工作并使用root设备.我已经根据我的测试床设备了解并了解风险.我也明白Android不是为了做到这一点而构建的.我也知道Wifi 802.11s引入了网状网络(未编入Android).我确实希望使用Wifi Direct(副蓝牙等),因为它充分利用了wifi基础设施模式的许多优点(节能,加密等).汉斯在这里提出了一个非常相似的问题,但并不想根植设备,我希望能够使设备生根.