public void apply(Parsed_packet headers_capture, ref Parsed_packet headers, P4ToCSharp.Library.error parseError, InControl inCtrl, out OutControl outCtrl) { outCtrl = new OutControl(); headers = headers_capture; TopPipe_Args TopPipe_Args = new TopPipe_Args(this, headers, parseError, inCtrl, outCtrl); if ((TopPipe_Args.parseError != error.NoError)) { TopPipe_Args.Instance.Drop_action(TopPipe_Args); return; } TopPipe_Args.Instance.ipv4_match.apply(TopPipe_Args); if ((TopPipe_Args.outCtrl.outputPort == DROP_PORT)) { return; } TopPipe_Args.Instance.check_ttl.apply(TopPipe_Args); if ((TopPipe_Args.outCtrl.outputPort == CPU_OUT_PORT)) { return; } TopPipe_Args.Instance.dmac.apply(TopPipe_Args); if ((TopPipe_Args.outCtrl.outputPort == DROP_PORT)) { return; } TopPipe_Args.Instance.smac.apply(TopPipe_Args); }
private ProcessResult ProcessPacket(int in_port, byte[] packet) { H hdr = default(H); P4ToCSharp.Library.error parserError = Architecture.error.NoError; // FIXME move lib.error to Core.error? try { p.apply(new packet_in(packet), out hdr); } catch (P4Exception ex) { parserError = ex.Error; Console.Error.WriteLine("P4 exception. " + ex.Error); } var inCtrl = new InControl() { inputPort = new bit4((byte)in_port) }; OutControl outCtrl; map.apply(hdr, ref hdr, parserError, inCtrl, out outCtrl); packet_out po = new packet_out(); d.apply(hdr, ref hdr, po); // TODO do something with the result return(new ProcessResult() { po = po, outCtrl = outCtrl }); }
public TopPipe_Args(TopPipe Instance, Parsed_packet headers, P4ToCSharp.Library.error parseError, InControl inCtrl, OutControl outCtrl) { this.Instance = Instance; this.headers = headers; this.parseError = parseError; this.inCtrl = inCtrl; this.outCtrl = outCtrl; }
public static void verify(bool check, P4ToCSharp.Library.error toSignal) { Core.verify(check, toSignal); }
static void verify(bool check, P4ToCSharp.Library.error toSignal) { throw new NotImplementedException(); }
public static void verify(bool condition, P4ToCSharp.Library.error err) { Core.verify(condition, err); }
public P4Exception(error error) { Error = error; }
static void verify(bool check, P4ToCSharp.Library.error toSignal) { vss_model.VSSModel.verify(check, toSignal); }
static void verify(bool condition, P4ToCSharp.Library.error err) { throw new NotImplementedException(); }