chiark / gitweb /
WIP DNS bitenc test compiles
[secnet.git] / dns-transp-server.c
index 154c907bbc08a6727860774dbc0ce16d09c0aa0a..fd52b8a2fc6ddcc51d282efdb48d4d0e532ff7fb 100644 (file)
 
 /*
  * Query format: create assoc:
- *    1 bit set    this a create assoc query
  *   32 bits       clientnonce
+ *    1 bit set    this is a create assoc query
  *   10 bits       offset of this data fragment in packet
  *    1 bit        is this the last fragment ?
  *    remainder    data packet fragment
  * data packet sequence number is always implicitly zero
  *
  * Query format: submit:
- *    1 bit clear  this is not a create assoc query
  *   32 bits       associd
+ *    1 bit clear  this is not a create assoc query
  *   16 bits       data packet sequence number
  *   10 bits       offset of this data fragment in packet
  *    1 bit        is this the last fragment
  *    remainder    data packet fragment
  *
  * Query format: fetch:
- *    1 bit clear  this is not a create assoc query
  *   32 bits       associd
- *   16 bits       client query distinguishper (for defeating dns cache)
+ *    1 bit clear  this is not a create assoc query
+ *   16 bits       client query distinguisher (for defeating dns cache)
  *
  * Response format:
  * [ 32 bits       associd  - only for responses to create assoc ]
  * Query bitstring, from above, is encoded as follows:
  *   1. 
  *    . append our server's domain
+ * Max DNS domain is 255 bytes.
+ * Max UDP packet is 512 bytes.
+ * If our domain is     .s.chiark.net.     (12 bytes)
+ * then we have 241 bytes of payload left.
+ * We need at least 4 subdomains to avoid blowing the 63-byte limit
+ * So that means we need 3 more dots, so 238 chars.
+ * At 5 bits per char that's 1190 bits.  Minus our submit
+ * header (1+32+16+10+1 = 60 bits) that's 1130 bits or 141.25 bytes.
+ */
 
 struct expires {
     struct expires *next;