О, кстати, я тут подумал, а можно ведь в WANDevice_Init (/src/tools/upnp/igd/igd.c, строчка 96) просто вот это:
Code:
if (pdata) {
strcpy(pdata->ifname, nvram_safe_get("wan_ifname"));
pdev->opaque = (void *) pdata;
}
поменять на это:
Code:
#include <rc.h>
char w_ifname[32] = "wan_ifname";
if (pdata) {
if (nvram_match("wan_proto", "pppoe") ||
nvram_match("wan_proto", "pptp") ||
nvram_match("wan_proto", "l2tp")) {
snprintf(w_ifname, sizeof(w_ifname), "wan%d_pppoe_ifname", wan_primary_ifunit());
}
strcpy(pdata->ifname, nvram_safe_get(w_ifname));
pdev->opaque = (void *) pdata;
}
И все должно жить нормально...