packet lib: add ICMP sub encoder/decoder class

Add ICMP sub encoder/decoder class for Destination Unreachable Message.
and, add parser to Time Exceeded Message class.

Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
packet lib: stop tlv parsing when finding LLDP_TLV_END

There may be padding at the end of payload.
So the assumption that there is no payload after LLDP_TLV_END
is not correct.

Reported-by: Q Lady <holynn.q@gmail.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
topology/switches: packet in handler

The logic of counting sent packet seems wrong.

Reported-by: Q Lady <holynn.q@gmail.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
topology/switches: exception during serialization

Datapath.send_packet_out() requires buffer_id, not dpid.

> Traceback (most recent call last):
>   File "/usr/lib/pymodules/python2.7/gevent/greenlet.py", line 390, in run
>     result = self._run(*self.args, **self.kwargs)
>   File "ryu/base/app_manager.py", line 126, in _event_loop
>     handler(ev)
>   File "/ryu/topology/switches.py", line 697, in packet_in_handler
>     self._drop_packet(msg)
>   File "/ryu/topology/switches.py", line 640, in _drop_packet
>     dp.send_packet_out(dp.id, msg.in_port, [])
>   File "/ryu/controller/controller.py", line 242, in send_packet_out
>     self.send_msg(packet_out)
>   File "/ryu/controller/controller.py", line 216, in send_msg
>     msg.serialize()
>   File "/ryu/ofproto/ofproto_parser.py", line 119, in serialize
>     self._serialize_body()
>   File "/ryu/ofproto/ofproto_v1_0_parser.py", line 1987, in _serialize_body
>     self.buffer_id, self.in_port, self.actions_len)
>   File "/ryu/ofproto/ofproto_parser.py", line 128, in msg_pack_into
>     buf += struct.pack(fmt, *args)
> error: 'I' format requires 0 <= number <= 4294967295
> <Greenlet at 0x229bd98: <bound method Switches._event_loop of <switches.Switches object at 0x1c8e690>>> failed with error

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
of1.3: fix OFPMeterStats

len -> length
as the latter seems to be expected by OFPMultipartReply.parser_stats_body.

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
of1.3: fix OFP_GROUP_DESC_STATS_PACK_STR

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
of1.2: OFPGroupFeaturesStats: tuple -> list

tuples are json-unfriendly.

(of1.3 version was completely broken until very recently
and the way i fixed it is consistent with this change.)

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
of1.3: fix OFPSetConfig default arguments

The equivalent fix for of1.2 is the commit 3d90147.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
rename ryu-client under ryu/tests

Since it is debugging tool for developer, don't install it.
and move it under ryu/rests directory.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Ryu 2.1

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
lib/packet: make protocol_name property instead of attributes

Because it is read-only and to prevent accidental over-write.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
lib/packet: make packet_base.parser abstract method

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
lib/packet: teach packet library to truncate padding octet

The patch teaches packet library to truncate padding octets.
Change packet_base.parser() to return (header, next_type, rest_of_packet)
The protocol class that knows its payload length should rest_of_packet
where padding octets at the last of packet is truncated.

As bonus,
- fix ipv6 parser as ipv6 header doesn't have options.
  It seems copy-and-paste from ipv4
- improve ipv4, tcp a bit

Cc: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Cc: Shaun Crampton <Shaun.Crampton@metaswitch.com>
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
openstack copyright notice

restore openstack copyright notice for the code taken from them.

> commit f2c6dfe1066aeecb5fdf2fb1cd5ce6476565fd24
> Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> Date:   Fri Nov 30 15:54:12 2012 +0900
>
>     set setup.py install_requires properly
>
>     Let's enable pip to solve the dependency.
>
>     The code is taken from OpenStack.
>
>     Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
MANIFEST.in: fix up to address warning

> warning: manifest_maker: MANIFEST.in, line 4: 'recursive-include' expects <dir> <pattern1> <pattern2> ...
> warning: no previously-included files matching '*' found under directory 'doc/build/*/'

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
packege: rpmlint warning

ryu.noarch: E: non-executable-script /usr/lib/python2.7/site-packages/ryu/tests/unit/lib/test_hub.py 0644L /usr/bin/env
ryu.noarch: E: non-executable-script /usr/lib/python2.7/site-packages/ryu/lib/hub.py 0644L /usr/bin/env

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
man: remove man page of ryu client

ryu-client isn't installed any more as it has been moved to ryu/tests.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
update the site url

Signed-off-by: OHMURA Kei <ohmura.kei@lab.ntt.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
ryu/app/conf_switch_key: fix a comment

Signed-off-by: OHMURA Kei <ohmura.kei@lab.ntt.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
define OFP_NO_BUFFER

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>