<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">I have implemented this code to handle ARP.. is it ok ? I am not sure about that.. need your comments please<div><br></div><div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">        a= packet.find('arp')</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">        if a:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">            if a.prototype == arp.PROTO_TYPE_IP:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                if a.hwtype == arp.HW_TYPE_ETHERNET:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                    if a.protosrc != 0:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                        if a.protosrc in arp_tale:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                            if a.hwsrc == True:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                                Mac = EthAddr(a.hwsrc)</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                                arp_table[a.protosrc] = Mac:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;"><br></div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">              </div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">            if a.opcode == arp.REQUEST:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">            # Maybe we can answer</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;"><br></div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">            if a.protodst in arp_table:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r = arp()</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.hwtype = a.hwtype</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.prototype = a.prototype</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.hwlen = a.hwlen</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.protolen = a.protolen</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.opcode = arp.REPLY</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.hwdst = a.hwsrc</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.protodst = a.protosrc</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.protosrc = a.protodst</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                Mac = arp_table[a.protodst]</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                </div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                Mac = _dpid_to_mac(dpid)</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                r.hwsrc = Mac</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                e = ethernet(type=packet.type, src=_dpid_to_mac(dpid),</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                dst=a.hwsrc)</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                e.payload = r</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                log.info("%s answering ARP for %s" % (dpid_to_str(dpid),</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                str(r.protosrc)))</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                msg = of.ofp_packet_out()</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                msg.data = e.pack()</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                msg.actions.append(of.ofp_action_output(port =</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                                                          of.OFPP_IN_PORT))</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                msg.in_port = inport</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                event.connection.send(msg)</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                     </div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">            else:</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                msg = of.ofp_packet_out()</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                msg.actions.append(of.ofp_action_output(port = of.OFPP_FLOOD))</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                msg.data = event.ofp</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;"></div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">                event.connection.send(msg.pack())</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;"><br></div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">Thanks</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;"><br></div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">Muhammad</div><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;"><br></div><div><div><div><div>On Nov 13, 2013, at 12:56 PM, Murphy McCauley <<a href="mailto:murphy.mccauley@gmail.com">murphy.mccauley@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Durga is spot on, but I'll throw in another couple things you might look at:<div>forwarding.l3_learning handles ARP</div><div>proto.arp_helper attempts to make it easier to work with ARP</div><div><br></div><div>(Oh, and misc.arp_responder has moved to proto.arp_responder in newer versions.)</div><div><br></div><div>-- Murphy</div><div><br><div><div>On Nov 13, 2013, at 2:06 AM, durga <<a href="mailto:c.vijaya.durga@gmail.com">c.vijaya.durga@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;color:rgb(153,51,0)"><br></div><div class="gmail_default"><font face="courier new, monospace" color="#990000">hello,</font></div>

<div class="gmail_default"><font face="courier new, monospace" color="#990000">Seems pox supports packet type as arp, can be found here (<span class="" style="font-weight:bold;line-height:25px"><span><a href="https://github.com/brownbytes/pox" style="text-decoration:none"><span>pox</span></a></span></span><span class="" style="line-height:25px"> / </span><span style="line-height:25px"><a href="https://github.com/brownbytes/pox/tree/betta/pox" style="text-decoration:none"><span>pox</span></a></span><span class="" style="line-height:25px"> / </span><span style="line-height:25px"><a href="https://github.com/brownbytes/pox/tree/betta/pox/lib" style="text-decoration:none"><span>lib</span></a></span><span class="" style="line-height:25px"> / </span><span style="line-height:25px"><a href="https://github.com/brownbytes/pox/tree/betta/pox/lib/packet" style="text-decoration:none"><span>packet</span></a></span><span class="" style="line-height:25px"> / </span><strong class="" style="line-height:25px">arp.py</strong><span style="line-height:25px"> ), as well as may be you can get some help by refering to the below example.</span></font></div>

<div class="gmail_default"><font face="courier new, monospace" color="#990000"><span style="line-height:18px"> </span><span style="line-height:18px"></span><div class="" style="margin:0px;display:inline-block"><span class="" style="font-weight:bold"><span><a href="https://github.com/brownbytes/pox" style="text-decoration:none">pox</a></span></span><span class=""> / </span><span><a href="https://github.com/brownbytes/pox/tree/betta/pox" style="text-decoration:none">pox</a></span><span class=""> / </span><span><a href="https://github.com/brownbytes/pox/tree/betta/pox/misc" style="text-decoration:none">misc</a></span><span class=""> / </span><strong class="">arp_responder.py</strong></div>

</font><br></div></div><div class="gmail_extra"><br clear="all"><div>Cheers!<br>Durga<br><br></div>
<br><br><div class="gmail_quote">On Wed, Nov 13, 2013 at 8:35 PM, Muhammad Furqan Gagan <span dir="ltr"><<a href="mailto:furqan.gagan@gmail.com" target="_blank">furqan.gagan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hello,<br>
<br>
Any one know how to handle ARP request in controller?<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888"><br>
Muhammad<br>
</font></span></blockquote></div><br></div>
</blockquote></div><br></div></div></blockquote></div><br></div></div></div></body></html>