/** * Returns the integer value of this IPv4 address. * * @return the IPv4 address's value as an integer */ public int toInt() { ByteBuffer bb = ByteBuffer.wrap(super.toOctets()); return bb.getInt(); }
/** * Serialize this IGMPQuery. * * @param bb the ByteBuffer to write into, positioned at the next spot to be written to. * @return the serialized message */ @Override public byte[] serialize(ByteBuffer bb) { bb.put(gaddr.toOctets()); byte fld = (byte) (0x7 & qrv); bb.put(fld); bb.put(qqic); bb.putShort((short) sources.size()); for (IpAddress ipaddr : sources) { bb.put(ipaddr.toOctets()); } return bb.array(); }
public byte[] serialize() { int len = getByteSize(); final byte[] data = new byte[len]; final ByteBuffer bb = ByteBuffer.wrap(data); bb.put(family); bb.put(encType); bb.put(addr.toOctets()); return data; }
/** * Serialize this Membership Report. * * @param bb the ByteBuffer to write into, positioned at the next spot to be written to. * @return serialized IGMP message. */ @Override public byte[] serialize(ByteBuffer bb) { bb.put(recordType); bb.put(auxDataLength); // reserved bb.putShort((short) sources.size()); bb.put(gaddr.toOctets()); for (IpAddress ipaddr : sources) { bb.put(ipaddr.toOctets()); } if (auxDataLength > 0) { bb.put(auxData); } return bb.array(); }
/** * Serialize this group address. * * @return the serialized address in a buffer */ public byte[] serialize() { int len = getByteSize(); final byte[] data = new byte[len]; final ByteBuffer bb = ByteBuffer.wrap(data); bb.put(this.family); bb.put(this.encType); // Todo: technically we should be setting the B and Z bits, but we'll never use them. bb.put(reserved); bb.put(this.masklen); bb.put(this.addr.toOctets()); return data; }
/** * Creates a new message with the specified data. * * @param id message id * @param type message type * @param sender sender endpoint * @param payload message payload */ DefaultMessage(long id, Endpoint sender, String type, byte[] payload) { this.id = id; this.type = checkNotNull(type, "Type cannot be null"); this.sender = checkNotNull(sender, "Sender cannot be null"); this.payload = checkNotNull(payload, "Payload cannot be null"); byte[] messageTypeBytes = type.getBytes(Charsets.UTF_8); IpAddress senderIp = sender.host(); byte[] ipOctets = senderIp.toOctets(); length = 25 + ipOctets.length + messageTypeBytes.length + payload.length; }
public byte[] serialize() { int len = addr.isIp4() ? ENC_SOURCE_IPV4_BYTE_LENGTH : ENC_SOURCE_IPV6_BYTE_LENGTH; final byte[] data = new byte[len]; final ByteBuffer bb = ByteBuffer.wrap(data); bb.put(this.family); bb.put(this.encType); // Todo: technically we should be setting the B and Z bits, but we'll never use them. byte mask = 0x0; if (this.sBit) { this.reserved |= 0x4; } if (this.wBit) { this.reserved |= 0x2; } if (this.rBit) { this.reserved |= 0x1; } bb.put(reserved); bb.put(this.masklen); bb.put(this.addr.toOctets()); return data; }
@Override public void write(Kryo kryo, Output output, IpAddress object) { byte[] octs = object.toOctets(); output.writeInt(octs.length); output.writeBytes(octs); }
@Override protected void write(DefaultMessage message, ByteBuffer buffer) { Endpoint sender = message.sender(); byte[] messageTypeBytes = message.type().getBytes(Charsets.UTF_8); IpAddress senderIp = sender.host(); byte[] ipOctets = senderIp.toOctets(); byte[] payload = message.payload(); int messageLength = 21 + ipOctets.length + messageTypeBytes.length + payload.length; buffer.putInt(messageLength); buffer.putLong(message.id()); if (senderIp.version() == Version.INET) { buffer.put((byte) 0x0); } else { buffer.put((byte) 0x1); } buffer.put(ipOctets); // write sender port buffer.putInt(sender.port()); // write length of message type buffer.putInt(messageTypeBytes.length); // write message type bytes buffer.put(messageTypeBytes); // write payload length buffer.putInt(payload.length); // write payload. buffer.put(payload); }
@Override protected void encode( ChannelHandlerContext context, InternalMessage message, ByteBuf out) throws Exception { out.writeInt(this.preamble); // write message id out.writeLong(message.id()); Endpoint sender = message.sender(); IpAddress senderIp = sender.host(); if (senderIp.version() == Version.INET) { out.writeByte(0); } else { out.writeByte(1); } out.writeBytes(senderIp.toOctets()); // write sender port out.writeInt(sender.port()); byte[] messageTypeBytes = message.type().getBytes(Charsets.UTF_8); // write length of message type out.writeInt(messageTypeBytes.length); // write message type bytes out.writeBytes(messageTypeBytes); byte[] payload = message.payload(); // write payload length out.writeInt(payload.length); // write payload. out.writeBytes(payload); }
@Override public int write(ChannelBuffer c) { int iLenStartIndex = c.writerIndex(); Iterator<IpV4Neighbour> listIterator = ipv4Neighbour.iterator(); c.writeByte(TYPE); int iLengthIndex = c.writerIndex(); c.writeShort(0); while (listIterator.hasNext()) { IpV4Neighbour speaker = listIterator.next(); c.writeBytes(speaker.localSpeaker().toOctets()); c.writeBytes(speaker.remoteSpeaker().toOctets()); } int length = c.writerIndex() - iLengthIndex; c.setShort(iLengthIndex, (short) (length - 2)); return c.writerIndex() - iLenStartIndex; }
@Override public void write(Kryo kryo, Output output, IpPrefix object) { byte[] octs = object.address().toOctets(); output.writeInt(octs.length); output.writeBytes(octs); output.writeInt(object.prefixLength()); }
@Override public void init(Criterion criterion, int bitWidth) throws ByteSequenceTrimException { IPCriterion c = (IPCriterion) criterion; initAsLpm(copyFrom(c.ip().address().toOctets()), c.ip().prefixLength(), bitWidth); } }
@Override public int compareTo(Object o) { if (this.equals(o)) { return 0; } if (o instanceof BgpFsSourcePrefix) { BgpFsSourcePrefix that = (BgpFsSourcePrefix) o; if (this.ipPrefix().prefixLength() == that.ipPrefix().prefixLength()) { ByteBuffer value1 = ByteBuffer.wrap(this.ipPrefix.address().toOctets()); ByteBuffer value2 = ByteBuffer.wrap(that.ipPrefix.address().toOctets()); return value1.compareTo(value2); } if (this.ipPrefix().prefixLength() > that.ipPrefix().prefixLength()) { return 1; } else if (this.ipPrefix().prefixLength() < that.ipPrefix().prefixLength()) { return -1; } } return 1; }
@Override public int compareTo(Object o) { if (this.equals(o)) { return 0; } if (o instanceof BgpFsDestinationPrefix) { BgpFsDestinationPrefix that = (BgpFsDestinationPrefix) o; if (this.ipPrefix().prefixLength() == that.ipPrefix().prefixLength()) { ByteBuffer value1 = ByteBuffer.wrap(this.ipPrefix.address().toOctets()); ByteBuffer value2 = ByteBuffer.wrap(that.ipPrefix.address().toOctets()); return value1.compareTo(value2); } if (this.ipPrefix().prefixLength() > that.ipPrefix().prefixLength()) { return 1; } else if (this.ipPrefix().prefixLength() < that.ipPrefix().prefixLength()) { return -1; } } return 1; }
private Ethernet buildArpRequest(IpAddress targetIp, IpAddress sourceIp, MacAddress sourceMac, VlanId vlan) { ARP arp = new ARP(); arp.setHardwareType(ARP.HW_TYPE_ETHERNET) .setHardwareAddressLength((byte) Ethernet.DATALAYER_ADDRESS_LENGTH) .setProtocolType(ARP.PROTO_TYPE_IP) .setProtocolAddressLength((byte) IpAddress.INET_BYTE_LENGTH) .setOpCode(ARP.OP_REQUEST); arp.setSenderHardwareAddress(sourceMac.toBytes()) .setSenderProtocolAddress(sourceIp.toOctets()) .setTargetHardwareAddress(ZERO_MAC_ADDRESS) .setTargetProtocolAddress(targetIp.toOctets()); Ethernet ethernet = new Ethernet(); ethernet.setEtherType(Ethernet.TYPE_ARP) .setDestinationMACAddress(MacAddress.BROADCAST) .setSourceMACAddress(sourceMac) .setPayload(arp); if (!vlan.equals(VlanId.NONE)) { ethernet.setVlanID(vlan.toShort()); } ethernet.setPad(true); return ethernet; }