use of org.onlab.packet.UDP in project dhcpl2relay by opencord.
the class DhcpL2RelayTestBase method constructEthernetPacket.
private Ethernet constructEthernetPacket(MacAddress srcMac, MacAddress dstMac, String dstIp, byte dhcpReqRsp, MacAddress clientHwAddress, Ip4Address dhcpClientIpAddress, VlanId clientVlan, short clientPbit) {
// Ethernet Frame.
Ethernet ethPkt = new Ethernet();
ethPkt.setSourceMACAddress(srcMac);
ethPkt.setDestinationMACAddress(dstMac);
ethPkt.setEtherType(Ethernet.TYPE_IPV4);
ethPkt.setVlanID(clientVlan.toShort());
ethPkt.setPriorityCode((byte) clientPbit);
if (DHCP.OPCODE_REPLY == dhcpReqRsp) {
ethPkt.setQinQPriorityCode((byte) 3);
ethPkt.setQinQVID((short) 4);
}
// IP Packet
IPv4 ipv4Reply = new IPv4();
ipv4Reply.setSourceAddress(0);
ipv4Reply.setDestinationAddress(dstIp);
ipv4Reply.setTtl((byte) 127);
// UDP Datagram.
UDP udpReply = new UDP();
udpReply.setSourcePort((byte) UDP.DHCP_CLIENT_PORT);
udpReply.setDestinationPort((byte) UDP.DHCP_SERVER_PORT);
// DHCP Payload.
DHCP dhcpReply = new DHCP();
dhcpReply.setOpCode(dhcpReqRsp);
dhcpReply.setYourIPAddress(dhcpClientIpAddress.toInt());
dhcpReply.setServerIPAddress(0);
final byte[] serverNameBytes = new byte[64];
String result = new String(serverNameBytes, StandardCharsets.US_ASCII).trim();
dhcpReply.setServerName(result);
final byte[] bootFileBytes = new byte[128];
String result1 = new String(bootFileBytes, StandardCharsets.US_ASCII).trim();
dhcpReply.setBootFileName(result1);
dhcpReply.setTransactionId(TRANSACTION_ID);
dhcpReply.setClientHardwareAddress(clientHwAddress.toBytes());
dhcpReply.setHardwareType(DHCP.HWTYPE_ETHERNET);
dhcpReply.setHardwareAddressLength((byte) 6);
udpReply.setPayload(dhcpReply);
ipv4Reply.setPayload(udpReply);
ethPkt.setPayload(ipv4Reply);
return ethPkt;
}
use of org.onlab.packet.UDP in project dhcpl2relay by opencord.
the class DhcpL2RelayTestBase method constructDhcpRequestPacket.
/**
* Constructs DHCP Request Packet.
*
* @return Ethernet packet
*/
Ethernet constructDhcpRequestPacket(MacAddress clientMac) {
Ethernet pkt = construcEthernetPacket(clientMac, MacAddress.BROADCAST, "255.255.255.255", DHCP.OPCODE_REQUEST, clientMac, Ip4Address.valueOf("0.0.0.0"));
IPv4 ipv4Packet = (IPv4) pkt.getPayload();
UDP udpPacket = (UDP) ipv4Packet.getPayload();
DHCP dhcpPacket = (DHCP) udpPacket.getPayload();
dhcpPacket.setOptions(constructDhcpOptions(DHCP.MsgType.DHCPREQUEST));
return pkt;
}
use of org.onlab.packet.UDP in project dhcpl2relay by opencord.
the class DhcpL2RelayTestBase method constructDhcpDiscoverPacket.
/**
* Constructs DHCP Discover Packet with client VLAN information.
*
* @return Ethernet packet
*/
Ethernet constructDhcpDiscoverPacket(MacAddress clientMac, VlanId clientVlan, short clientPbit) {
Ethernet pkt = constructEthernetPacket(clientMac, MacAddress.BROADCAST, "255.255.255.255", DHCP.OPCODE_REQUEST, clientMac, Ip4Address.valueOf("0.0.0.0"), clientVlan, clientPbit);
IPv4 ipv4Packet = (IPv4) pkt.getPayload();
UDP udpPacket = (UDP) ipv4Packet.getPayload();
DHCP dhcpPacket = (DHCP) udpPacket.getPayload();
dhcpPacket.setOptions(constructDhcpOptions(DHCP.MsgType.DHCPDISCOVER));
return pkt;
}
use of org.onlab.packet.UDP in project dhcpl2relay by opencord.
the class DhcpL2RelayTestBase method constructDhcpNakPacket.
/**
* Constructs DHCP Nak Packet.
*
* @return Ethernet packet
*/
Ethernet constructDhcpNakPacket(MacAddress servMac, MacAddress clientMac, String ipAddress, String dhcpClientIpAddress, VlanId clientVlan, short clientPcp) {
Ethernet pkt = constructEthernetPacket(servMac, clientMac, ipAddress, DHCP.OPCODE_REPLY, clientMac, Ip4Address.valueOf(dhcpClientIpAddress), clientVlan, clientPcp);
IPv4 ipv4Packet = (IPv4) pkt.getPayload();
UDP udpPacket = (UDP) ipv4Packet.getPayload();
DHCP dhcpPacket = (DHCP) udpPacket.getPayload();
dhcpPacket.setOptions(constructDhcpOptions(DHCP.MsgType.DHCPNAK));
return pkt;
}
use of org.onlab.packet.UDP in project dhcpl2relay by opencord.
the class DhcpL2RelayTestBase method constructDhcpAckPacket.
/**
* Constructs DHCP Ack Packet.
*
* @return Ethernet packet
*/
Ethernet constructDhcpAckPacket(MacAddress servMac, MacAddress clientMac, String ipAddress, String dhcpClientIpAddress) {
Ethernet pkt = construcEthernetPacket(servMac, clientMac, ipAddress, DHCP.OPCODE_REPLY, clientMac, Ip4Address.valueOf(dhcpClientIpAddress));
IPv4 ipv4Packet = (IPv4) pkt.getPayload();
UDP udpPacket = (UDP) ipv4Packet.getPayload();
DHCP dhcpPacket = (DHCP) udpPacket.getPayload();
dhcpPacket.setOptions(constructDhcpOptions(DHCP.MsgType.DHCPACK));
return pkt;
}
Aggregations