* Network protocol of pdb server and sip-router module *

The pdb server daemon listen only for UDP messages. The requests contains in
the UDP payload the number starting with a international prefix, e.g. '49' for
germany. It must contain only numbers like this: '49721913742734'.

The answer packet contains then the number string from the respective request,
null-terminated and followed by two bytes which represents the result. This
two bytes are interpreted as 16 bit signed integer value, the UDP payload is
in network byte order (most significant byte first).  

Possible values for the search request:
  * 0: the number could not be found
  * 1-999 the number was found and the result represents its carrier ID
  * 1000: the number could be found, but its owned from a carriers which is
    not interesting for us and belongs to the "other carrier" group

From PDB_VERSION_1 onwards the pdb request and reply looks like this:

    |          header           |  body |

    Current version is 1 (0x01).

    PDB_TYPE_REQUEST_ID = 0,    /* request pdb type */
    PDB_TYPE_REPLY_ID,          /* reply pdb type */

    PDB_CODE_DEFAULT = 0,   /* for request */
    PDB_CODE_OK,            /* for response - OK */
    PDB_CODE_NOT_NUMBER,    /* for response - letters found in the number */
    PDB_CODE_NOT_FOUND,     /* for response - no pdb_id found for the number */

    The length of the whole message

    A pdb_msg id which might be used for asynchronous queries.

    Request number including '\0' for request.
    Request number including '\0' and pdb_id for reply.

Backwards compatibility with the old msg protocol is kept when the first byte
received is different from the known versions ('0x01' for now)

For more info about the data structures used, see common.h file.