add IGMP snooping application

this application provides the simple example of IGMP snooping.

the module "igmplib" mainly offers 2 functions:
- listening on in the IGMP conversation between multicast routers and hosts
- emulating of the querier function of multicast servers
the former operates a switch as a snooping switch and controls transmission of an unnecessary multicasting packet.
the latter realizes the IGMP conversation in the environment without multicast routers.

the module "simple_switch_igmp" is a variation of "simple_switch".
the switch receives the "EventPacketIn" event instead of the "EventOFPPacketIn" event from the module "igmplib" in order to except IGMP.

Signed-off-by: Yuichi Ito <ito.yuichi0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Fix Windows setup dependency bug

The hook raises an AttributeError exception on Windows because
of recent changes in the pbr project. This fix solves the issue.

This is adapted from https://review.openstack.org/#/c/42170/

Since ryu didn't depend on pyudev, I think it no longer needs
a removal here.

Signed-off-by: Wei-Li Tang <alextwl@xinguard.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
topology: Setting highest rule priority to LLDP packets

Signed-off-by: Srini Seetharaman <srini.seetharaman@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
ofctl_rest: fix delete_flow_entry

Signed-off-by: Yuichi Ito <ito.yuichi0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
ofctl_rest: support OFPExperimenter message

this patch makes ofctl_rest enable use of OFPExperimenter message.

usage)

  URI:    /stats/experimenter/{dpid}
  method: POST

the message body is as follows:

  experimenter  Experimenter ID. (default: 0)
  exp_type      Experimenter defined type. (default:0)
  data_type     Data encoding type. 'ascii' or 'base64'. (default: 'ascii')
  data          Experimenter-defined arbitrary additional data. (default: '')

e.g.)

  curl -X POST -d '{"experimenter": 8992,
                    "exp_type": 10,
                    "data": "\x00\x00\x00\x01"}' http://localhost:8080/stats/experimenter/1

  curl -X POST -d '{"experimenter": 8992,
                    "exp_type": 10.
                    "data_type": "base64",
                    "data": "AAAAAQ=="}' http://localhost:8080/stats/experimenter/1

Signed-off-by: Yuichi Ito <ito.yuichi0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>