<?xml version="1.0" encoding="utf-16"?><html><head><style id="signatureStyle" type="text/css"><!--#x9e9fa072bb104b1
{font-family: 'Segoe UI'; font-size: 12pt;}
--></style><style id="css_styles" type="text/css"><!--blockquote.cite { margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc }
blockquote.cite2 {margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc; margin-top: 3px; padding-top: 0px; }
a img { border: 0px; }
ol, ul { list-style-position: inside } 
body { font-family: メイリオ; font-size: 12pt;   }--></style></head><body><div>Thank you Vladimir, Andy, for quick response.</div><div><br /></div><div>I was seeking for a way to decrease number of tables, but looks like I should follow the example Vladimir has shown.</div>
<div><br /></div><div id="signature_old"><div id="x9e9fa072bb104b1"><div>-- <div>Kentaro Ebisawa <<a href="mailto:ebiken.g@gmail.com">ebiken.g@gmail.com</a>></div></div></div></div><div><br /></div>
<div>------ Original Message ------</div>
<div>From: "Vladimir Gurevich" <<a href="mailto:vladimir.gurevich@barefootnetworks.com">vladimir.gurevich@barefootnetworks.com</a>></div>
<div>To: "Kentaro Ebisawa" <<a href="mailto:ebiken.g@gmail.com">ebiken.g@gmail.com</a>></div>
<div>Cc: "p4-dev" <<a href="mailto:p4-dev@lists.p4.org">p4-dev@lists.p4.org</a>></div>
<div>Sent: 2019/02/17 16:26:03</div>
<div>Subject: Re: [P4-dev] Don't care for exact match key</div><div><br /></div>
<div id="xc20048dc68cf432"><blockquote cite="CAKkdYETZ3YBAs9wEybZBLhHZDNMvv_PnmwiegCNK2_rPLbN3Eg@mail.gmail.com" type="cite" class="cite2">
<div dir="ltr">Hello Kentaro,<div><br /></div><div>Generally speaking, if you want to have an ability to specify "don't care" you have to use ternary match.</div><div><br /></div><div>In your particular case, given that IPv4 and IPv6 headers are mutually exclusive (unless you designed a new protocol where they aren't), using ternary match seems like a big waste. I would suggest having two separate exact match tables, one for IPv4 and another one for IPv6 and use an if statement to choose between them like so:</div><div><br /></div><div><font face="monospace, monospace">table test_table_ipv4 {<br />     key = {<br />         hdr.ipv4.dstAddr: exact;<br />     }<br />...<br /></font></div><div><font face="monospace, monospace"><br /></font></div><div><font face="monospace, monospace">table test_table_ipv6 {<br />     key = {<br />         hdr.ipv6.dstAddr: exact;<br />     }<br />...<br /></font></div><div><font face="monospace, monospace"><br /></font></div><div><font face="monospace, monospace"><b>if</b> (hdr.ipv4.isValid()) {</font></div><div><font face="monospace, monospace">    test_table_ipv4.<b>apply</b>();</font></div><div><font face="monospace, monospace">} <b>else if</b> (hdr.ipv6.isValid()) {</font></div><div><font face="monospace, monospace">    test_table_ipv6.<b>apply</b>(); </font></div><div><font face="monospace, monospace">} <b>else</b> {</font></div><div><font face="monospace, monospace">    . . .</font></div><div><font face="monospace, monospace">}</font></div><div><br /></div><div>Happy hacking,</div><div>Vladimir</div><div><br /></div><div><b style="font-size:large">Vladimir Gurevich</b><br /></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><b style="font-size:large">Barefoot Networks</b></div><div><b><font size="2">Director, Customer Training and Education</font></b></div><div><font size="2">Email: <a href="mailto:vgurevich@barefootnetworks.com">vgurevich@barefootnetworks.com</a></font></div><div><font size="2">Phone: (408) 833-4505</font></div><div><br /><br /></div></div></div></div></div></div></div></div></div><br /></div></div><br /><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Feb 16, 2019 at 11:10 PM Kentaro Ebisawa <<a href="mailto:ebiken.g@gmail.com">ebiken.g@gmail.com</a>> wrote:<br /></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br />
<br />
Are there a way to set "don't care" for exact match key?<br />
Or do I have to use lpm or ternary to ignore some of the match keys in <br />
the table.<br />
<br />
For example, I want to have a table which has 2 exact match keys and set <br />
below kind of entries.<br />
* Exact match IPv4 dst address and don't care IPv6 dst address<br />
* Exact match IPv6 dst address and don't care IPv4 dst address<br />
<br />
table test_table {<br />
     key = {<br />
         hdr.ipv4.dstAddr: exact;<br />
         hdr.ipv6.dstAddr: exact;<br />
     }<br />
...<br />
<br />
--<br />
Kentaro Ebisawa <<a href="mailto:ebiken.g@gmail.com">ebiken.g@gmail.com</a>><br />
<br />
<br />
_______________________________________________<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">http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org</a><br />
</blockquote></div>
</blockquote></div>
</body></html>