fix optind parsing errors

killed -b and bidir
-f and -t no longer take an argument.

after argument parsing we end up with optind pointing at the
target site.
Proof of concept that you can indeed sweep the tos bits

I twiddled with this back in january, trying to understand the
relationship between the iov, the cmsg, and the msg header structures
and I finally grok it. The internet was of no help. The kernel
support was obviously there, and also buried deep in the glibc
send and sendto calls....

However the answer is too long to fit into this commit and there
are still issues to sort out with ipv4 vs ipv6 vs ipv6mapped sockets.

But with this, we can, indeed, sweep the values of the dscp field on
a per packet basis.

d@puck:~/git/isochronous$ ./udpburst -f localhost -C
IPV6_RECVTCLASS: Protocol not available
controllen: 20
64 bytes -- received 32 of 32 -- 32 consecutive 0 ooo 0 dups 8 ect

 1 2 3 4 5 6 7 8 9 a b c d e f101112131415161718191a1b1c1d1e1f
msg_controllen must be set before entering the CMSG macros

it is far from obvious but on send the CMSG macros leverage
the value of msg_controllen, and then you iterate on top of
that, and when you are done, you set msg_controllen to the
derived value.
confirmed: ipv6mapped addrs do not inherit from ipv4 or ipv6 settings

If your socket is native ipv4 or native ipv6, you can set the tos
value. If it is ipv6mapped to ipv4, you can't. The standards SHOULD
have included direct mappings back and forth to the TOS, TTL, and
PROTO fields, but they don't. Grr.

Assuming we go into a forking server mode establishing a new udp
connection, we should be able to create the new socket as a non-mapped
socket of the right protocol and handle setting the tos bits that way.

This commit makes ipv6 work locally and breaks ipv4. We still have
some trouble with transiting the internet...

Setting TCLASS

d@puck:~/git/isochronous$ ./udpburst -c 16 -f -C ::1
controllen: 20
64 bytes -- received 16 of 16 -- 16 consecutive 0 ooo 0 dups 4 ect

 1 2 3 4 5 6 7 8 9 a b c d e f

IP_TOS bits lost on an ipv4 connection:

d@puck:~/git/isochronous$ ./udpburst -f -C -c 16 snapon.lab.bufferbloat.net
IPV6_RECVTCLASS: Protocol not available
64 bytes -- received 16 of 16 -- 1 consecutive 3 ooo 0 dups 0 ect

 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

and if you try setting IP_TOS from an IPv6mapped socket you get:

d@snapon:~/git/isochronous$ ./udpburst -S
controllen: 20
sendto: Invalid argument
makefile: enable debugging by default
fix sending larger than default packets.

The actual packet size doesn't line up, tho.

some misc stuff towards thinking about breaking apart the tests
snuck in here too.
udpburst: get rid of ipv4mapped sockets in favor of ipv4 and ipv6 socket

Since we can't get ipv4 events from an ipv6 mapped socket, switch
server to using individual sockets for each protocol. This of course
add some complexity, and requires poll (which is not completely done yet),
but we can now sweep ipv6 and ipv4 tos values correctly.

It is a shame and a PITA to have to keep protocol version related state
around. However ipv6mapping doesn't work by default on some arches anyway,
so this is sort of a win.

d@puck:~/git/isochronous$ ./udpburst -f -C -c 16 ::1
64 bytes -- received 16 of 16 -- 16 consecutive 0 ooo 0 dups 4 ect

1112131415161718191a1b1c1d1e1f
d@puck:~/git/isochronous$ ./udpburst -f -C -c 16 localhost
64 bytes -- received 16 of 16 -- 16 consecutive 0 ooo 0 dups 4 ect

2122232425262728292a2b2c2d2e2f
ipv4mapping may not be the problem - it may be kernel related

well, there was another possibility I hadn't considered, in that
the destination machine I am trying to reach is running an older kernel.

diffserv stuff that works on 3.13 on localhost and ::1...

   works only on ::1 on 3.9 and 2.6.35.

It doesn't mean that I don't have an error somewhere, but some
more kernel archeology is required.
Added correct support for sweeping through various dscp values

* Added parsing diffserv symbols (e.g. CS1) to -D [default dscp value]
* Added tests for sweeping against all cs, all af, all tos, common wifi
  diffserv combos (-W {cs,af,tos,wifi,all}
Forgot the dscp test definitions
Print the order in which diffserv marked packets arrive

When the -C option is specified on the client, and the -W [diffserv test]
is specified on the server, search through the arrival times of each
packet to print what packets arrived when.
Change magic and port number

As we are about to change the protocol, and thus render this version
of the code incompatible with the previous versions, change the
magic number and port number.