Hi
I'm trying to create an ARP reply for OpenFlow 1.3 based on
http://h30499.www3.hp.com/t5/SDN-Development/replying-ARP-message/m-p/6404080#M199
but does not work
my code is
//------------------------------
cs.addPacketListener(pl2, DIRECTOR, ALTITUDE2, EnumSet.of(ARP));
//----------------------------------------------
privateclass PacketListener2 extends SequencedPacketAdapter {
@Override
publicboolean event(MessageContext context) {
Arp arpPkt = context.decodedPacket().get(ARP);
if (arpPkt.opCode().equals(OpCode.REQ)) {
if (is_a_rule(arpPkt.senderIpAddr(), arpPkt.senderMacAddr(), arpPkt.targetIpAddr(), context.getPacketIn()
.getInPort(), context.srcEvent().dpid())) {
return
true;
}
}
returnfalse;
}
privateboolean is_a_rule(IpAddress senderIpAddr,
MacAddress senderMacAddr, IpAddress targetIpAddr,
BigPortNumber inPort, DataPathId dpid) {
.
.
.
.
Arp arpgen = build_arp(key);
OfmMutablePacketOut packetout = (OfmMutablePacketOut) MessageFactory.create(ProtocolVersion.V_1_3, MessageType.PACKET_OUT);
packetout.inPort(inPort);
packetout.bufferId(BufferId.NO_BUFFER);
packetout.data(arpgen.toString().getBytes());
//packetout.addAction(act) no ofv1.3
try {
cs.send(packetout.toImmutable(), dpid);
log.info("arp packet was sent"
+ dpid.toString() + "de "
+ arpgen.targetIpAddr().toString());
} catch (OpenflowException e) {
// TODO Auto-generated catch block
e.printStackTrace();
returntrue;
}
the code does not generate any errors and on the log info appears "" arp packet was sent "" ,
thanks for your help