public override void Define() { LocalNetworkPrefix localPrefix = null; ArpUnanswered hostArp = null; When() .Match(() => localPrefix) .Match(() => hostArp) .All <IpFlow>(f => f.IpSrc != hostArp.Request.ArpSrcProtoIpv4 || IsLocalOrMulticast(f.IpDst, localPrefix)); Then() .Do(ctx => EmitInvalidGateway(ctx, hostArp)); }
private void EmitInvalidGateway(IContext ctx, ArpUnanswered badGwArp) { ctx.TryInsert(new InvalidGateway { HostIpAddr = badGwArp.Request.ArpSrcProtoIpv4, GwIpAddr = badGwArp.Request.ArpDstProtoIpv4 }); }