X-Git-Url: http://www.average.org/gitweb/?p=pdns-pipe-nmc.git;a=blobdiff_plain;f=SPEC.md;h=4737ba6b19be77011b93eaa1922afa787a16328d;hp=aa8cea7b509031d95ace9297d907655b20a90b0a;hb=c3a4cdbe13176c6b6327c7bac775d0bc6be2819c;hpb=ea145b4776c02b1555cf2460938244b9ac88cbc8 diff --git a/SPEC.md b/SPEC.md index aa8cea7..4737ba6 100644 --- a/SPEC.md +++ b/SPEC.md @@ -9,7 +9,7 @@ or a JSON `Map`, with the following attributes, all optional: | Key | Type | Comment | |-------------|---------------------------------------|--------------------------------------------| -| service | Array(SrvObj) | Located two levels above pos. | +| service | Array(SrvObj) | Located two levels above position | | ip | Array(String) | Dotted quad format "1.2.3.4" | | ip6 | Array(String) | Semicolon format "DEAD::BEEF" | | tor | String | Onion name | @@ -22,7 +22,7 @@ or a JSON `Map`, with the following attributes, all optional: | info | JsonObj | Currently unspecified | | ns | Array(String) | Domain names as in `NS` | | delegate | String | Replaces current object | -| import | String | "Deep" merges into current obj. | +| import | Array(String) | "Deep" merges into current object | | map | Map(String:DomObj) | Tree of subdomain objects | | fingerprint | Array(String) | | | tls | Map(String:Map(String:Array(TlsObj))) | Outer `Map` by `Protocol`, inner by `Port` | @@ -85,12 +85,19 @@ or a JSON `Map`, with the following attributes, all optional: ## Data Interpretation +### Semantics of the Attributes + +...FIXME + +### Lookup Sequence + Assuming a query is performed for `sdN`++"."++{...}++"."++`sd2`++"."++`sd1`++"."++`dom`++".bit" (`sdX` list possibly being empty), the lookup process starts by -populating a "seed" DomObj with a single attribute `"import"` -the value of which corresponds to the `dom` name in the -Namecoin namespace, currently `"d/" ++ dom`. +querying the database for the object corresponding to `dom`. +Technically, it is easiest to populate a "seed" DomObj with a +single attribute `"import"` the value of which corresponds to the +`dom` name in the Namecoin namespace, which is `"d/" ++ dom`. This domain object is then transformed by the following recursive sequece: @@ -100,8 +107,8 @@ recursive sequece: 2. If attribute `"import"` does not exist in the resulting object, recursion stops, and step 3 is performed on the result If attribute `"import"` exists in the resulting object, lookup is - is performed for the value of this attribute, and fetched object - is recursively merged into the base domain. The `"import"` attribute + is performed for the values of this attribute, and fetched objects + are recursively merged into the base domain. The `"import"` attribute is removed from the result. Then the result is passed as base domain to step 1. 3. If subdomain chain is empty, recursion stops, and step 4 is @@ -117,7 +124,7 @@ recursive sequece: Note that the process involves recursion nested to three levels. -## Merging +### Merging Procedure When a domain object `sub` needs merging into a domain object `base`, the following rules are applied: