boilerplate_conv(AAAA, QType::AAAA, conv.xfrIP6(d_ip6); );
-boilerplate_conv(XPF, QType::XPF, conv.xfr8BitInt(d_version);
- conv.xfr8BitInt(d_protocol);
- conv.xfrCAWithoutPort(d_version, d_src);
- conv.xfrCAWithoutPort(d_version, d_dst);
- conv.xfrCAPort(d_src);
- conv.xfrCAPort(d_dst));
-
boilerplate_conv(NS, QType::NS, conv.xfrName(d_content, true));
boilerplate_conv(PTR, QType::PTR, conv.xfrName(d_content, true));
boilerplate_conv(CNAME, QType::CNAME, conv.xfrName(d_content, true));
DLVRecordContent::report();
DNSRecordContent::regist(QClass::ANY, QType::TSIG, &TSIGRecordContent::make, &TSIGRecordContent::make, "TSIG");
DNSRecordContent::regist(QClass::ANY, QType::TKEY, &TKEYRecordContent::make, &TKEYRecordContent::make, "TKEY");
- XPFRecordContent::report();
//TSIGRecordContent::report();
OPTRecordContent::report();
EUI48RecordContent::report();
string d_ip6; // why??
};
-class XPFRecordContent : public DNSRecordContent
-{
-public:
- XPFRecordContent(uint8_t protocol, const ComboAddress& src, const ComboAddress& dst);
- includeboilerplate(XPF);
-
- uint8_t d_version;
- uint8_t d_protocol;
- ComboAddress d_src;
- ComboAddress d_dst;
-};
-
class MXRecordContent : public DNSRecordContent
{
public:
CAA=257,
DLV=32769,
ADDR=65400,
- ALIAS=65401,
- XPF=65422
+ ALIAS=65401
};
typedef pair<string,uint16_t> namenum;
qtype_insert("DLV", 32769);
qtype_insert("ADDR", 65400);
qtype_insert("ALIAS", 65401);
- qtype_insert("XPF", 65422);
}
} initializer;
bool showflags=false;
bool hidesoadetails=false;
boost::optional<Netmask> ednsnm;
- std::shared_ptr<DNSRecordContent> xpf;
+ uint16_t xpfcode = 0, xpfversion = 0, xpfproto = 0;
+ char *xpfsrc = NULL, *xpfdst = NULL;
for(int i=1; i<argc; i++) {
if ((string) argv[i] == "--help") {
if (strcmp(argv[i], "tcp") == 0)
tcp=true;
if (strcmp(argv[i], "ednssubnet") == 0) {
- i++;
- if (argc == i) {
- usage();
+ if(argc < i+2) {
+ cerr<<"ednssubnet needs an argument"<<endl;
exit(EXIT_FAILURE);
}
- ednsnm=Netmask(argv[i]);
+ ednsnm=Netmask(argv[++i]);
+ }
+ if (strcmp(argv[i], "xpf") == 0) {
+ if(argc < i+6) {
+ cerr<<"xpf needs five arguments"<<endl;
+ exit(EXIT_FAILURE);
+ }
+ xpfcode = atoi(argv[++i]);
+ xpfversion = atoi(argv[++i]);
+ xpfproto = atoi(argv[++i]);
+ xpfsrc = argv[++i];
+ xpfdst = argv[++i];
}
- if (strcmp(argv[i], "xpf") == 0)
- xpf=DNSRecordContent::mastermake(QType::XPF, 1, argv[++i]);
}
}
pw.commit();
}
- if(xpf.get())
+ if(xpfcode)
{
- pw.startRecord(DNSName("."), QType::XPF, 0, 1, DNSResourceRecord::ADDITIONAL);
- xpf->toPacket(pw);
+ ComboAddress src(xpfsrc), dst(xpfdst);
+ pw.startRecord(DNSName("."), xpfcode, 0, 1, DNSResourceRecord::ADDITIONAL);
+ // xpf->toPacket(pw);
+ pw.xfr8BitInt(xpfversion);
+ pw.xfr8BitInt(xpfproto);
+ pw.xfrCAWithoutPort(xpfversion, src);
+ pw.xfrCAWithoutPort(xpfversion, dst);
+ pw.xfrCAPort(src);
+ pw.xfrCAPort(dst);
pw.commit();
}