]> granicus.if.org Git - pdns/commitdiff
full removal of squatted XPF code point
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 14 Nov 2017 13:17:47 +0000 (14:17 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Mon, 22 Jan 2018 22:04:36 +0000 (23:04 +0100)
make XPF code point configurable in sdig
remove XPF from dnsrecords and qtype
check argument count for sdig modifiers

pdns/dnsrecords.cc
pdns/dnsrecords.hh
pdns/qtype.hh
pdns/sdig.cc

index 0b7e92d54828c081eb12e123ecc06598400ecb1d..39e662a56f36fdd92580d128c7d884e2d0179ecc 100644 (file)
@@ -134,13 +134,6 @@ void ARecordContent::doRecordCheck(const DNSRecord& dr)
 
 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));
@@ -624,7 +617,6 @@ void reportOtherTypes()
    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();
index 72afd9a6c2041884c565c498a17c5b36ca5ce8c8..fe19b55c7a6e0a345a882a176ddc4c0df0c29777 100644 (file)
@@ -90,18 +90,6 @@ private:
   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:
index dccde072d24cc772bf3ec12b195459a660873fdb..5d3577fcfda5ebe33771ce83f61c2f1740c8a0f5 100644 (file)
@@ -125,8 +125,7 @@ public:
     CAA=257,
     DLV=32769,
     ADDR=65400,
-    ALIAS=65401,
-    XPF=65422
+    ALIAS=65401
   };
 
   typedef pair<string,uint16_t> namenum;
@@ -218,7 +217,6 @@ private:
       qtype_insert("DLV", 32769);
       qtype_insert("ADDR", 65400);
       qtype_insert("ALIAS", 65401);
-      qtype_insert("XPF", 65422);
     }
   } initializer;
 
index c743427b8ad3e45325abd9d4f01b01b7fdcdb277..70b2e50e27366a4ceaa8e0045ef01d0a37004653 100644 (file)
@@ -36,7 +36,8 @@ try
   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") {
@@ -72,15 +73,23 @@ try
       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]);
     }
   }
 
@@ -107,10 +116,17 @@ try
     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();
   }