Beispiel #1
0
        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);
        }
Beispiel #2
0
            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
                });
            }
Beispiel #3
0
 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;
 }
Beispiel #4
0
 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();
 }
Beispiel #6
0
 public static void verify(bool condition, P4ToCSharp.Library.error err)
 {
     Core.verify(condition, err);
 }
Beispiel #7
0
 public P4Exception(error error)
 {
     Error = error;
 }
Beispiel #8
0
 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();
 }