bgp: clean up getpeername() and getsockname() usage

The current code calls getpeername() and getsockname() at lots of
places. The formats of the return values of getpeername() and
getsockname() are different between ipv4 and v6. So the code became
messy.

Calling getpeername() and getsockname() at one place and caching the
results is ideal. But that needs some refactoring. This patch is kinda
halfway.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
packet/bgp: fix BGPPathAttributeMpReachNLRI next_hop parser and serializer

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
bgp: add IPv6 advertisement support

You can advertize IPv6 addresses to IPv6 neighbors.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
bgp: support specifying next hop for neighbor

neighbor_add method takes 'next_hop' parameter. If not specified, like
before, host's ip connected to the neighbor is used as a next hop.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
sw test too: use assured Forwarding behavior DSCP value for dscp_remark

OpenFlow spec describes "DSCP values that do not encode a drop
precedence are not modified".

Diffserv Assured Forwarding described in rfc2597(+rfc3260) has
DSCP values which encodes "drop precedence".

I think we'd better test OFPMBT_DSCP_REMARK works on AF21 -> AF22
rating, for example.

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