< prev index next >

src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java

Print this page
rev 57536 : [mq]: Cleanup

*** 1,7 **** /* ! * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 1403,1416 **** MembershipRegistry registry = this.registry; if (registry != null) { registry.forEach(k -> { if (k instanceof MembershipKeyImpl.Type6) { MembershipKeyImpl.Type6 key6 = (MembershipKeyImpl.Type6) k; ! Net.join6(fd, key6.groupAddress(), key6.index(), key6.source()); } else { MembershipKeyImpl.Type4 key4 = (MembershipKeyImpl.Type4) k; ! Net.join4(fd, key4.groupAddress(), key4.interfaceAddress(), key4.source()); } }); } // reset registration in all Selectors that this channel is registered with --- 1403,1417 ---- MembershipRegistry registry = this.registry; if (registry != null) { registry.forEach(k -> { if (k instanceof MembershipKeyImpl.Type6) { MembershipKeyImpl.Type6 key6 = (MembershipKeyImpl.Type6) k; ! Net.join6(fd, key6.groupAddress(), key6.interfaceIndex(), key6.source()); } else { MembershipKeyImpl.Type4 key4 = (MembershipKeyImpl.Type4) k; ! Net.join4(fd, key4.groupAddress(), key4.interfaceIndex(), ! key4.interfaceAddress(), key4.source()); } }); } // reset registration in all Selectors that this channel is registered with
*** 1464,1473 **** --- 1465,1478 ---- throw new IllegalArgumentException("Only IPv6 sockets can join IPv6 multicast group"); } else { throw new IllegalArgumentException("Address type not supported"); } + // network interface, should always be >= 0 + int index = interf.getIndex(); + assert index >= 0; + // check source address if (source != null) { if (source.isAnyLocalAddress()) throw new IllegalArgumentException("Source address is a wildcard address"); if (source.isMulticastAddress())
*** 1495,1521 **** MembershipKeyImpl key; if ((family == StandardProtocolFamily.INET6) && ((group instanceof Inet6Address) || Net.canJoin6WithIPv4Group())) { - int index = interf.getIndex(); - if (index == -1) - throw new IOException("Network interface cannot be identified"); - // need multicast and source address as byte arrays byte[] groupAddress = Net.inet6AsByteArray(group); ! byte[] sourceAddress = (source == null) ? null : ! Net.inet6AsByteArray(source); // join the group int n = Net.join6(fd, groupAddress, index, sourceAddress); if (n == IOStatus.UNAVAILABLE) throw new UnsupportedOperationException(); key = new MembershipKeyImpl.Type6(this, group, interf, source, ! groupAddress, index, sourceAddress); ! } else { // need IPv4 address to identify interface Inet4Address target = Net.anyInet4Address(interf); if (target == null) throw new IOException("Network interface not configured for IPv4"); --- 1500,1520 ---- MembershipKeyImpl key; if ((family == StandardProtocolFamily.INET6) && ((group instanceof Inet6Address) || Net.canJoin6WithIPv4Group())) { // need multicast and source address as byte arrays byte[] groupAddress = Net.inet6AsByteArray(group); ! byte[] sourceAddress = (source == null) ? null : Net.inet6AsByteArray(source); // join the group int n = Net.join6(fd, groupAddress, index, sourceAddress); if (n == IOStatus.UNAVAILABLE) throw new UnsupportedOperationException(); key = new MembershipKeyImpl.Type6(this, group, interf, source, ! groupAddress, sourceAddress); } else { // need IPv4 address to identify interface Inet4Address target = Net.anyInet4Address(interf); if (target == null) throw new IOException("Network interface not configured for IPv4");
*** 1523,1533 **** int groupAddress = Net.inet4AsInt(group); int targetAddress = Net.inet4AsInt(target); int sourceAddress = (source == null) ? 0 : Net.inet4AsInt(source); // join the group ! int n = Net.join4(fd, groupAddress, targetAddress, sourceAddress); if (n == IOStatus.UNAVAILABLE) throw new UnsupportedOperationException(); key = new MembershipKeyImpl.Type4(this, group, interf, source, groupAddress, targetAddress, sourceAddress); --- 1522,1532 ---- int groupAddress = Net.inet4AsInt(group); int targetAddress = Net.inet4AsInt(target); int sourceAddress = (source == null) ? 0 : Net.inet4AsInt(source); // join the group ! int n = Net.join4(fd, groupAddress, index, targetAddress, sourceAddress); if (n == IOStatus.UNAVAILABLE) throw new UnsupportedOperationException(); key = new MembershipKeyImpl.Type4(this, group, interf, source, groupAddress, targetAddress, sourceAddress);
*** 1537,1557 **** return key; } } @Override ! public MembershipKey join(InetAddress group, ! NetworkInterface interf) throws IOException { return innerJoin(group, interf, null); } @Override ! public MembershipKey join(InetAddress group, ! NetworkInterface interf, ! InetAddress source) throws IOException { Objects.requireNonNull(source); return innerJoin(group, interf, source); } --- 1536,1553 ---- return key; } } @Override ! public MembershipKey join(InetAddress group, NetworkInterface interf) throws IOException { return innerJoin(group, interf, null); } @Override ! public MembershipKey join(InetAddress group, NetworkInterface interf, InetAddress source) throws IOException { Objects.requireNonNull(source); return innerJoin(group, interf, source); }
*** 1564,1580 **** if (!key.isValid()) return; try { if (key instanceof MembershipKeyImpl.Type6) { ! MembershipKeyImpl.Type6 key6 = ! (MembershipKeyImpl.Type6)key; ! Net.drop6(fd, key6.groupAddress(), key6.index(), key6.source()); } else { MembershipKeyImpl.Type4 key4 = (MembershipKeyImpl.Type4)key; ! Net.drop4(fd, key4.groupAddress(), key4.interfaceAddress(), ! key4.source()); } } catch (IOException ioe) { // should not happen throw new AssertionError(ioe); } --- 1560,1575 ---- if (!key.isValid()) return; try { if (key instanceof MembershipKeyImpl.Type6) { ! MembershipKeyImpl.Type6 key6 = (MembershipKeyImpl.Type6)key; ! Net.drop6(fd, key6.groupAddress(), key6.interfaceIndex(), key6.source()); } else { MembershipKeyImpl.Type4 key4 = (MembershipKeyImpl.Type4)key; ! Net.drop4(fd, key4.groupAddress(), key4.interfaceIndex(), ! key4.interfaceAddress(), key4.source()); } } catch (IOException ioe) { // should not happen throw new AssertionError(ioe); }
*** 1621,1637 **** int n; if (key instanceof MembershipKeyImpl.Type6) { MembershipKeyImpl.Type6 key6 = (MembershipKeyImpl.Type6)key; ! n = Net.block6(fd, key6.groupAddress(), key6.index(), Net.inet6AsByteArray(source)); } else { MembershipKeyImpl.Type4 key4 = (MembershipKeyImpl.Type4)key; ! n = Net.block4(fd, key4.groupAddress(), key4.interfaceAddress(), ! Net.inet4AsInt(source)); } if (n == IOStatus.UNAVAILABLE) { // ancient kernel throw new UnsupportedOperationException(); } --- 1616,1632 ---- int n; if (key instanceof MembershipKeyImpl.Type6) { MembershipKeyImpl.Type6 key6 = (MembershipKeyImpl.Type6)key; ! n = Net.block6(fd, key6.groupAddress(), key6.interfaceIndex(), Net.inet6AsByteArray(source)); } else { MembershipKeyImpl.Type4 key4 = (MembershipKeyImpl.Type4)key; ! n = Net.block4(fd, key4.groupAddress(), key4.interfaceIndex(), ! key4.interfaceAddress(), Net.inet4AsInt(source)); } if (n == IOStatus.UNAVAILABLE) { // ancient kernel throw new UnsupportedOperationException(); }
*** 1649,1667 **** if (!key.isValid()) throw new IllegalStateException("key is no longer valid"); try { if (key instanceof MembershipKeyImpl.Type6) { ! MembershipKeyImpl.Type6 key6 = ! (MembershipKeyImpl.Type6)key; ! Net.unblock6(fd, key6.groupAddress(), key6.index(), Net.inet6AsByteArray(source)); } else { ! MembershipKeyImpl.Type4 key4 = ! (MembershipKeyImpl.Type4)key; ! Net.unblock4(fd, key4.groupAddress(), key4.interfaceAddress(), ! Net.inet4AsInt(source)); } } catch (IOException ioe) { // should not happen throw new AssertionError(ioe); } --- 1644,1660 ---- if (!key.isValid()) throw new IllegalStateException("key is no longer valid"); try { if (key instanceof MembershipKeyImpl.Type6) { ! MembershipKeyImpl.Type6 key6 = (MembershipKeyImpl.Type6)key; ! Net.unblock6(fd, key6.groupAddress(), key6.interfaceIndex(), Net.inet6AsByteArray(source)); } else { ! MembershipKeyImpl.Type4 key4 = (MembershipKeyImpl.Type4)key; ! Net.unblock4(fd, key4.groupAddress(), key4.interfaceIndex(), ! key4.interfaceAddress(), Net.inet4AsInt(source)); } } catch (IOException ioe) { // should not happen throw new AssertionError(ioe); }
< prev index next >