major, revamp ud_msg_s to include the service channel

The new policy is that only messages to the same service channel
can be packed.  If packing to channel A is followed by packing to
channel B, then the packet for A is sent off (implicitly) before
packing to B begins.

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
hygiene, shorten __msg_fits_p() inline to one line

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, adapt ud_{pack,chck}_cmsg() to ud_msg_s containing the service channel already

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, kick ud_cmsg_s struct and rewrite UD_SVC as linear combination

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, adapt svc-pong.c to recent control message api changes

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, update service from svc slot in __sock_s instead of fiddling with the buffers directly

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, update svc field (in __sock_s) only after ud_flush()

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, sacrifice cno counter for another magic number 0x5544 (== "UD")

Also, turn all slots of the header into big-endian.

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
test, adapt regression tests to new API

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'core/api' into next

* core/api:
  test, adapt regression tests to new API
  minor, sacrifice cno counter for another magic number 0x5544 (== "UD")
  minor, update svc field (in __sock_s) only after ud_flush()
  minor, update service from svc slot in __sock_s instead of fiddling with the buffers directly
  minor, adapt svc-pong.c to recent control message api changes
  minor, kick ud_cmsg_s struct and rewrite UD_SVC as linear combination
  minor, adapt ud_{pack,chck}_cmsg() to ud_msg_s containing the service channel already
  hygiene, shorten __msg_fits_p() inline to one line
  major, revamp ud_msg_s to include the service channel
minor, upon ud_dscrd() (recv branch) check the magic number and make sure the packet is at least sizeof(ud_hdr_s) bytes long

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
fix, hygiene, don't declare ud_sock_t restrict via typedef

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
chore, hygiene, rephrase sockaddr_in6 initialiser as hierarchical union->struct initialiser

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
fix, PEBKAC, de-big-endian-ify the command upon ud_chck_msg()

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'core/api' into next

* core/api:
  fix, PEBKAC, de-big-endian-ify the command upon ud_chck_msg()
  chore, hygiene, rephrase sockaddr_in6 initialiser as hierarchical union->struct initialiser
  fix, hygiene, don't declare ud_sock_t restrict via typedef
  minor, upon ud_dscrd() (recv branch) check the magic number and make sure the packet is at least sizeof(ud_hdr_s) bytes long
fix, PEBKAC, actually start recv()ing new packets when check counter is beyond read counter

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
chore, provide UDEBUG() macro in unserding.c

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, after ud_dscrd() call in ud_chck_msg() check if new data is there

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, provide ud_chck_cmsg() and connect UD_SVC_PINGs to ud_pack_pong()s

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, deflect control messages in ud_chck_msg() to ud_chck_cmsg()

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>