The code you've supplied causes a NullPointerException on the line:
IpAddress dst = ip.dstAddr();
Full code used in that method was:
@Override
public boolean event(MessageContext messageContext) {
Packet packet = messageContext.decodedPacket();
Ip ip = (Ip) packet.get(ProtocolId.IP);
IpAddress dst = ip.dstAddr();
return false;
}