can or should be done about this.
## Configuration Parameters
+### `pipe-abi-version`
+| | |
+|:-|:-|
+|Type|Integer|
+|Default|1|
+|Mandatory|No|
+
+This is the version of the question format that is sent to the co-process ([`pipe-command`](#pipe-command)) for the pipe backend.
+
+If not set the default `pipe-abi-version` is 1. When set to 2, the local-ip-address field is added after the remote-ip-address. (the local-ip-address refers to the IP address the question was received on). When set to 3, the real remote IP/subnet is added based on edns-subnet support (this also requires enabling 'edns-subnet-processing'). When set to 4 it sends zone name in AXFR request.
+
### `pipe-command`
| | |
|:-|:-|
To match only ANY and A queries for www.powerdns.com, use `^www.powerdns.com;(A|ANY)$`.
-### `pipebackend-abi-version`
-This is the version of the question format that is sent to the co-process ([`pipe-command`](#pipe-command)) for the pipe backend.
-
-If not set the default pipebackend-abi-version is 1. When set to 2, the local-ip-address field is added after the remote-ip-address. (the local-ip-address refers to the IP address the question was received on). When set to 3, the real remote IP/subnet is added based on edns-subnet support (this also requires enabling 'edns-subnet-processing'). When set to 4 it sends zone name in AXFR request.
-
## Deploying the PipeBackend with the BindBackend
Included with the PDNS distribution is the example.pl backend which has knowledge of the example.com zone, just like the BindBackend. To install both, add the following to your `pdns.conf`:
The question format, for type Q questions:
-#### pipebackend-abi-version = 1 [default]
+#### pipe-abi-version = 1 [default]
```
Q qname qclass qtype id remote-ip-address
```
-#### pipebackend-abi-version = 2
+#### pipe-abi-version = 2
```
Q qname qclass qtype id remote-ip-address local-ip-address
```
-#### pipebackend-abi-version = 3
+#### pipe-abi-version = 3
```
Q qname qclass qtype id remote-ip-address local-ip-address edns-subnet-address
```
## `pipebackend-abi-version`
* Integer
* Default: 1
+* Removed in: 4.0.0 (is now specific to the backend)
ABI version to use for the pipe backend. See
["PipeBackend protocol"](backend-pipe.md#pipebackend-protocol).
d_coproc=shared_ptr<CoWrapper>(new CoWrapper(getArg("command"), getArgAsNum("timeout")));
d_regex=getArg("regex").empty() ? 0 : new Regex(getArg("regex"));
d_regexstr=getArg("regex");
- d_abiVersion = ::arg().asNum("pipebackend-abi-version");
+ d_abiVersion = getArgAsNum("abi-version");
}
catch(const ArgException &A) {
L<<Logger::Error<<kBackendId<<" Fatal argument error: "<<A.reason<<endl;
{
declare(suffix,"command","Command to execute for piping questions to","");
declare(suffix,"timeout","Number of milliseconds to wait for an answer","2000");
- declare(suffix,"regex","Regular exception of queries to pass to coprocess","");
+ declare(suffix,"regex","Regular expression of queries to pass to coprocess","");
+ declare(suffix,"abi-version","Version of the pipe backend ABI","1");
}
DNSBackend *make(const string &suffix="")
::arg().set("queue-limit","Maximum number of milliseconds to queue a query")="1500";
::arg().set("recursor","If recursion is desired, IP address of a recursing nameserver")="no";
::arg().set("allow-recursion","List of subnets that are allowed to recurse")="0.0.0.0/0";
- ::arg().set("pipebackend-abi-version","Version of the pipe backend ABI")="1";
::arg().set("udp-truncation-threshold", "Maximum UDP response size before we truncate")="1680";
::arg().set("disable-tcp","Do not listen to TCP queries")="no";
#
# overload-queue-length=0
-#################################
-# pipebackend-abi-version Version of the pipe backend ABI
-#
-# pipebackend-abi-version=1
-
#################################
# prevent-self-notification Don't send notifications to what we think is ourself
#