<div dir="ltr">Hi,<div><br></div><div>Yes you can add your code to primitives.cpp. There are many examples you can look at so this shouldn't be too hard. Don't forget to call the REGISTER_PRIMITIVE macro. Note that after you modify the simple_switch code, it will not be the "standard" simple_switch any more. It will be your own version of it, which supports one extra primitive.</div><div><br></div><div>In order to have the p4c-bm compiler support your new primitive, you will need to add your primitive description to <a href="https://github.com/p4lang/p4c-bm/blob/master/p4c_bm/primitives.json">https://github.com/p4lang/p4c-bm/blob/master/p4c_bm/primitives.json</a>. Once again, there are many examples there that you can look at, but if you need help you can send an email to the list.</div><div><br></div><div>Finally, I just want to stress out what Andy already said. Just because it runs on bmv2 simple_switch doesn't mean it will run on other P4-programmable targets.</div><div><br></div><div>Thanks,</div><div><br></div><div>Antonin</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 6, 2017 at 1:01 AM, yunchen chang <span dir="ltr"><<a href="mailto:y2924uki@gmail.com" target="_blank">y2924uki@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello Andy,<div><br></div><div>Thanks for your response.</div><div><br></div><div>1) I am using mininet(simple_switch.cpp) to be my environment, </div><div>    so I want to know where should I implement my C/C++ code? (<span style="font-size:12.8px">primitives.cpp?</span>)</div><div><br></div><div>2) Is there anything I should pay special attention to? ( like: restrictions of compiler )</div><span class=""><div><br></div><div><div style="font-size:12.8px">Thank you.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Best regards,</div><div style="font-size:12.8px">Abbie</div></div></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 3, 2017 at 8:35 AM, Andy Fingerhut <span dir="ltr"><<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">The P4 language is focused on parsing and manipulating packet headers, not payloads.<div><br></div><div>One could write a custom extension that could search for patterns in a payload, but it would be non-portable, and would have to be implemented in a target-specific language, e.g. C/C++ for a software model, Verilog for an ASIC or FPGA, etc.  It would be similar to having a library written in assembler and calling it from C, with the assembler implemented anew for each target processor.</div><div><br></div><div>Andy</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_6169122823075557203h5">On Mon, Mar 27, 2017 at 9:13 AM, yunchen chang <span dir="ltr"><<a href="mailto:y2924uki@gmail.com" target="_blank">y2924uki@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_6169122823075557203h5"><div dir="ltr"><div>Hello everyone,</div><div><br></div><div>I am doing an experiment for DPI in P4.</div><div>(detect packet label in data plane, not in controller)</div><div><br></div><div>I need some complex funtcions like lookup the host name of payload.</div><div>Example:</div><div>host_name: <a href="http://tw.yahoo.com" target="_blank">tw.yahoo.com</a></div><div>mtach_key: .yahoo.</div><div><br></div><div>I plan to write function in "primitives.cpp" at first.</div><div><br></div><div>But after I read this posted : [<a href="http://lists.p4.org/pipermail/p4-dev_lists.p4.org/2016-August/000449.html" target="_blank">http://lists.p4.org/pipermail<wbr>/p4-dev_lists.p4.org/2016-Augu<wbr>st/000449.html</a>], it pointed that P4 can't implement "pattern matching".</div><div><br></div><div>I want to know is there any solution in current P4?</div><div>(or any suggestion)</div><div><br></div><div>Thank you.</div><div><br></div><div>Best regards,</div><div>Abbie</div></div>
<br></div></div>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/<wbr>listinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</div>