|
@@ -454,6 +454,31 @@ int getEth0MacAddress()
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+int isUap0up(void)
|
|
|
+{
|
|
|
+ int result = FAIL;
|
|
|
+
|
|
|
+ FILE *fp;
|
|
|
+ char cmd[256];
|
|
|
+ char buf[512];
|
|
|
+
|
|
|
+ strcpy(cmd, "ifconfig uap0");;
|
|
|
+ fp = popen(cmd, "r");
|
|
|
+ if(fp != NULL)
|
|
|
+ {
|
|
|
+ while(fgets(buf, sizeof(buf), fp) != NULL)
|
|
|
+ {
|
|
|
+ if(strstr(buf, "uap0") > 0)
|
|
|
+ {
|
|
|
+ result = PASS;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pclose(fp);
|
|
|
+
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
char* getSystemModeName(unsigned char mode)
|
|
|
{
|
|
|
char* result;
|
|
@@ -2842,6 +2867,26 @@ void InitEthernet()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // Bridge ethernet to uap0 to get dynamic ip address
|
|
|
+ if(ShmSysConfigAndInfo->SysConfig.isEnableLocalPowerSharging &&
|
|
|
+ (ShmSysConfigAndInfo->SysConfig.AthInterface.WifiMode == 2) &&
|
|
|
+ (isUap0up() == PASS) &&
|
|
|
+ (access("/sys/class/net/br0/address", F_OK) == -1))
|
|
|
+ {
|
|
|
+ sleep(10);
|
|
|
+ system("/sbin/ifconfig br0 down");
|
|
|
+ system("/usr/sbin/brctl delbr br0");
|
|
|
+ system("/usr/sbin/brctl addbr br0");
|
|
|
+ system("/sbin/ifconfig br0 192.168.10.200 up");
|
|
|
+ system("/usr/sbin/brctl addif br0 uap0");
|
|
|
+ system("/usr/sbin/brctl addif br0 eth0");
|
|
|
+ system("/bin/sed -i '/interface/d' /etc/udhcpd.conf");
|
|
|
+ system("/bin/echo 'interface br0' >> /etc/udhcpd.conf");
|
|
|
+ system("pkill Module_Wifi");
|
|
|
+
|
|
|
+ DEBUG_INFO("Bridge uap0 & eth0 for local power sharing by ethernet.\n");
|
|
|
+ }
|
|
|
+
|
|
|
sleep(5);
|
|
|
}
|
|
|
}
|