Hello Harsh,
On 1/4/21 9:53 AM, Harsh Shandilya wrote:
Hey Adam,
On 2021-01-03 05:59, Adam Irr wrote:
The ndc command used didn't work on my Nvidia Shield (rooted with a
custom-built kernel). The ip link command does work. I have only
tested this on an Nvidia Shield (Android TV - Version 9.0 Pie).
I couldn't find a lot of documentation on ndc so it's possible my
device/kernel is misconfigured. If you suspect this is the case, let
me know.
You couldn't find documentation because there isn't any, it's
effectively "private API" and Google has broken it time and again. It
is rather curious that you're running into this issue though, since
we've had the NDC code in place since before Android 9 came out and
went through breaking changes in every cycle without these specific
invocations failing. The last ndc related problem we had was with the
Android 11 release, where a similar fix[1] was implemented.
I've Cc'ed Jason for reviewing this change, but I'm decidedly curious
as to why just the Nvidia SHIELD seems to need it.
I get a permission denied error when running the ndc command, even with
root. Given the lack of ndc documentation I didn't get any further than
that. If you have any other ideas I can try them.
darcy:/ # ndc interface setmtu wg0 1418
400 0 Failed to set MTU (Permission denied)
darcy:/ # ifconfig wg0 | grep MTU
UP POINTOPOINT RUNNING NOARP MTU:1420 Metric:1
darcy:/ # ip link set dev wg0 mtu 1419
darcy:/ # ifconfig wg0 | grep MTU
UP POINTOPOINT RUNNING NOARP MTU:1419 Metric:1
darcy:/ # whoami
root
I'll await Jason's review
Signed-off-by: Adam Irr <[email protected]>
---
src/wg-quick/android.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/wg-quick/android.c b/src/wg-quick/android.c
index 326efa9..941c7b8 100644
--- a/src/wg-quick/android.c
+++ b/src/wg-quick/android.c
@@ -995,7 +995,7 @@ static void set_mtu(const char *iface, unsigned
int mtu)
int endpoint_mtu, next_mtu;
if (mtu) {
- cndc("interface setmtu %s %u", iface, mtu);
+ cmd("ip link set dev %s mtu %d", iface, mtu);
return;
}
@@ -1016,7 +1016,7 @@ static void set_mtu(const char *iface, unsigned
int mtu)
endpoint_mtu = next_mtu;
}
- cndc("interface setmtu %s %d", iface, endpoint_mtu - 80);
+ cmd("ip link set dev %s mtu %d", iface, endpoint_mtu - 80);
}
static void add_route(const char *iface, unsigned int netid, const
char *route)
--
2.25.1
Cheers,
Harsh
1:
https://git.zx2c4.com/wireguard-tools/commit/?id=9a0d65e2afbd6e418c883e0de8555b4fac29f1d5
Thank you,
Adam