From: Tobias Brunner Date: Mon, 11 Sep 2017 17:14:31 +0000 (+0200) Subject: android: Ignore IllegalArgumentException for multicast addresses X-Git-Tag: 5.6.1dr3~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66b7a08884261e1308fabb4853da6acca8755786;p=thirdparty%2Fstrongswan.git android: Ignore IllegalArgumentException for multicast addresses Some Android versions seem to reject routes that use multicast addresses. Fixes #2420. --- diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java index ba3d434ceb..61535ffa2e 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java @@ -934,7 +934,18 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe ranges.remove(mExcludedSubnets); for (IPRange subnet : ranges.subnets()) { - builder.addRoute(subnet.getFrom(), subnet.getPrefix()); + try + { + builder.addRoute(subnet.getFrom(), subnet.getPrefix()); + } + catch (IllegalArgumentException e) + { /* some Android versions don't seem to like multicast addresses here, + * ignore it for now */ + if (!subnet.getFrom().isMulticastAddress()) + { + throw e; + } + } } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) @@ -964,7 +975,17 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe ranges.remove(mExcludedSubnets); for (IPRange subnet : ranges.subnets()) { - builder.addRoute(subnet.getFrom(), subnet.getPrefix()); + try + { + builder.addRoute(subnet.getFrom(), subnet.getPrefix()); + } + catch (IllegalArgumentException e) + { + if (!subnet.getFrom().isMulticastAddress()) + { + throw e; + } + } } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)