<div>Hi,All</div><div> </div><div>I checked the OpenFlow specification 1.0.0. In my case, I should use OFPFC_DELETE instead of OFPFC_DELETE_STRICT since I only check two fields(i.e match.tp_src and match.tp_dst).</div><div>
 </div><div>And I find that although OFPFC_DELETE supports wildcards, it also has some stricts.</div><div> </div><div>For example, only using clear1.match.tp_src = 80 won't work.</div><div> </div><div>We should use the following instead:</div>
<div> clear1.match.dl_type = 0x800<br> clear1.match.nw_proto = 6<br> clear1.match.tp_src = 80</div><div> </div><div>I guess that's because the match fields are also layerd, thus I cannot match tp_src (which is layer 3) directly. I should go through dl_type(layer 2) , nw_proto (protocol) first.  Am I right?</div>
<div> </div><div>Now it seems more clear to me but my quesion still exists. How can keep specific TCP entries and delete others?</div><div> </div><div>Thanks very much.</div><div> </div><div>Weiyang</div><div><br><br> </div>
<div class="gmail_quote">2012/9/28 Weiyang Mo <span dir="ltr"><<a href="mailto:moweiyang1988@gmail.com" target="_blank">moweiyang1988@gmail.com</a>></span><br><blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">
<div>Hi,all,</div><div> </div><div>I try to programme a function which deletes TCP flow entires except for tp_src=80,tp_dst = 25521 and tp_src=1234,tp_dst=8765  I try the following approches:</div><div> </div><div>(1) clear1 = of.ofp_flow_mod(match=of.ofp_match(),command=of.OFPFC_DELETE_STRICT)<br>

  clear2 = of.ofp_flow_mod(match=of.ofp_match(),command=of.OFPFC_DELETE_STRICT)<br>  clear1.match.tp_src = 80<br>  clear1.match.tp_dst = 25521<br>  clear2.match.tp_src = 1234<br>  clear2.match.tp_src = 8765</div><div>   for switch in core.openflow._connections.values():<br>

    switch.send(clear1)<br>    switch.send(clear2)<br></div><div>I know that's the other way around,  it only deletes these two sepcific TCP flow entries and keeps others. However I need  keep specific ones and delete others.</div>

<div> </div><div>(2) I also try OFPFC_DELETE because I don't quite understand what this will exactly do.</div><div>  clear1 = of.ofp_flow_mod(match=of.ofp_match(),command=of.OFPFC_DELETE)<br>  clear2 = of.ofp_flow_mod(match=of.ofp_match(),command=of.OFPFC_DELETE)<br>

  clear1.match.tp_src =80<br>  clear1.match.tp_dst = 25521<br>  clear2.match.tp_src = 1234<br>  clear2.match.tp_src = 8765</div><div>  for switch in core.openflow._connections.values():<br>    switch.send(clear1)<br>    switch.send(clear2)</div>

<div> </div><div>In this case all flow entries are deleted disregarding my match fields( even delete ARP flow entry..). Does this mean that if I use OFPFC_DELETE, it will remove all existent entries disregarding match fields?</div>

<div> </div><div>Do you have any advice that only keeps specific TCP entries and delete others ( e.g in my instance, only keep tp_src=80,tp_dst = 25521 and tp_src=1234,tp_dst=8765)</div><div> </div><div>Thanks very much.</div>
<span class="HOEnZb"><font color="#888888">
<div> </div><div>Weiyang<br></div><div><br> </div>
</font></span></blockquote></div><br>