DIFF support file format. This file contains changes to the main NSD-DATABASE file. The file contents is in network format. Diff file parts, each part has - 32 bits type field. - 64 bits timestamp field. - 32 bits length field. - length bytes of content. - 32 bits repeat of the length field. TYPE="IXFR" - zone name - 32 bit new serial number. - 16 bit ID number (the query ID from the query, could be different from the ID in this packet) - 32 bit sequence number of the packet (starting from 0). - remaining contents is IXFR packet contents, max 64K (the RRs). (or contents is AXFR, since IXFR spec allows for that) without a SURE part, it is probably sent with bad tsig. TYPE="SURE" contents is: a) reference to the IXFR packet that is OKed. - str: zone name, - 32 bit old serial number. (to check that db-serial is unchanged). or 0 if no serial available yet. - 32 bit new serial number, - 16 bit ID number (query_id) ( note that due to having one TCP per zone, and checking that the queryID on incoming packets, one transfer,commit for a zone; no interleaved IXFR packets for different commits. ) ( so the serial, ID are for checking only ) - 32 bit number of IXFR packets that are to be applied. - these IXFR packets must precede the SURE packet. b) uint8: commit=1(IXFR is OK) or rollback=0(ignore that IXFR). c) space for a text string message (preceded by 32bitcount), i.e. 'at time <stamp> came from <addr>, tsig checked with key <key>'. or rejected <reason for rejection>. Unknown types are an error. A part truncated by EOF must be ignored. A part that ends in a bad length field must be ignored. xfrd only appends the file or truncates trailing garbage. reload only reads the file.