2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-09-02 06:55:16 +00:00

Merge branch 'master' of ssh://git.bind10.isc.org/var/bind10/git/bind10

Conflicts:
	ChangeLog
This commit is contained in:
Tomek Mrugalski
2014-02-10 20:03:10 +01:00
3 changed files with 37 additions and 12 deletions

View File

@@ -1,10 +1,16 @@
749. [func] tomek 750. [func] tomek
b10-dhcp4, b10-dhcp6: Simple client classification has been b10-dhcp4, b10-dhcp6: Simple client classification has been
implemented. Incoming packets can be assigned to zero or more implemented. Incoming packets can be assigned to zero or more
client classes. It is possible to restrict subnet usage to a given client classes. It is possible to restrict subnet usage to a given
client class. User's Guide and Developer's Guide has been updated. client class. User's Guide and Developer's Guide has been updated.
(Trac #3274, git 1791d19899b92a6ee411199f664bdfc690ec08b2) (Trac #3274, git 1791d19899b92a6ee411199f664bdfc690ec08b2)
749. [bug] tmark
b10-dhcp-ddns now sets the TTL value in RRs that add A, AAAA, or PTR DNS
entries to the lease length provided in instigating NameChangeRequest.
This corrected a bug in which the TTL was always set to 0.
(Trac# 3299, git dbacf27ece77f3d857da793341c6bd31ef1ea239)
748. [bug] marcin 748. [bug] marcin
b10-dhcp4 server picks a subnet, to assign address for a directly b10-dhcp4 server picks a subnet, to assign address for a directly
connected client, using IP address of the interface on which the connected client, using IP address of the interface on which the

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") // Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
// //
// Permission to use, copy, modify, and/or distribute this software for any // Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above // purpose with or without fee is hereby granted, provided that the above
@@ -588,10 +588,13 @@ NameAddTransaction::buildAddFwdAddressRequest() {
// Next build the Update Section. // Next build the Update Section.
// Create the TTL based on lease length.
dns::RRTTL lease_ttl(getNcr()->getLeaseLength());
// Create the FQDN/IP 'add' RR and add it to the to update section. // Create the FQDN/IP 'add' RR and add it to the to update section.
// Based on RFC 2136, section 2.5.1 // Based on RFC 2136, section 2.5.1
dns::RRsetPtr update(new dns::RRset(fqdn, dns::RRClass::IN(), dns::RRsetPtr update(new dns::RRset(fqdn, dns::RRClass::IN(),
getAddressRRType(), dns::RRTTL(0))); getAddressRRType(), lease_ttl));
addLeaseAddressRdata(update); addLeaseAddressRdata(update);
request->addRRset(D2UpdateMessage::SECTION_UPDATE, update); request->addRRset(D2UpdateMessage::SECTION_UPDATE, update);
@@ -599,7 +602,7 @@ NameAddTransaction::buildAddFwdAddressRequest() {
// Now create the FQDN/DHCID 'add' RR and add it to update section. // Now create the FQDN/DHCID 'add' RR and add it to update section.
// Based on RFC 2136, section 2.5.1 // Based on RFC 2136, section 2.5.1
update.reset(new dns::RRset(fqdn, dns::RRClass::IN(), update.reset(new dns::RRset(fqdn, dns::RRClass::IN(),
dns::RRType::DHCID(), dns::RRTTL(0))); dns::RRType::DHCID(), lease_ttl));
addDhcidRdata(update); addDhcidRdata(update);
request->addRRset(D2UpdateMessage::SECTION_UPDATE, update); request->addRRset(D2UpdateMessage::SECTION_UPDATE, update);
@@ -635,6 +638,9 @@ NameAddTransaction::buildReplaceFwdAddressRequest() {
// Next build the Update Section. // Next build the Update Section.
// Create the TTL based on lease length.
dns::RRTTL lease_ttl(getNcr()->getLeaseLength());
// Create the FQDN/IP 'delete' RR and add it to the update section. // Create the FQDN/IP 'delete' RR and add it to the update section.
// Based on RFC 2136, section 2.5.2 // Based on RFC 2136, section 2.5.2
dns::RRsetPtr update(new dns::RRset(fqdn, dns::RRClass::ANY(), dns::RRsetPtr update(new dns::RRset(fqdn, dns::RRClass::ANY(),
@@ -644,7 +650,7 @@ NameAddTransaction::buildReplaceFwdAddressRequest() {
// Create the FQDN/IP 'add' RR and add it to the update section. // Create the FQDN/IP 'add' RR and add it to the update section.
// Based on RFC 2136, section 2.5.1 // Based on RFC 2136, section 2.5.1
update.reset(new dns::RRset(fqdn, dns::RRClass::IN(), update.reset(new dns::RRset(fqdn, dns::RRClass::IN(),
getAddressRRType(), dns::RRTTL(0))); getAddressRRType(), lease_ttl));
addLeaseAddressRdata(update); addLeaseAddressRdata(update);
request->addRRset(D2UpdateMessage::SECTION_UPDATE, update); request->addRRset(D2UpdateMessage::SECTION_UPDATE, update);
@@ -661,6 +667,9 @@ NameAddTransaction::buildReplaceRevPtrsRequest() {
std::string rev_addr = D2CfgMgr::reverseIpAddress(getNcr()->getIpAddress()); std::string rev_addr = D2CfgMgr::reverseIpAddress(getNcr()->getIpAddress());
dns::Name rev_ip(rev_addr); dns::Name rev_ip(rev_addr);
// Create the TTL based on lease length.
dns::RRTTL lease_ttl(getNcr()->getLeaseLength());
// Content on this request is based on RFC 4703, section 5.4 // Content on this request is based on RFC 4703, section 5.4
// Reverse replacement has no prerequisites so straight on to // Reverse replacement has no prerequisites so straight on to
// building the Update section. // building the Update section.
@@ -678,14 +687,14 @@ NameAddTransaction::buildReplaceRevPtrsRequest() {
// Create the FQDN/IP PTR 'add' RR, add the FQDN as the PTR Rdata // Create the FQDN/IP PTR 'add' RR, add the FQDN as the PTR Rdata
// then add it to update section. // then add it to update section.
update.reset(new dns::RRset(rev_ip, dns::RRClass::IN(), update.reset(new dns::RRset(rev_ip, dns::RRClass::IN(),
dns::RRType::PTR(), dns::RRTTL(0))); dns::RRType::PTR(), lease_ttl));
addPtrRdata(update); addPtrRdata(update);
request->addRRset(D2UpdateMessage::SECTION_UPDATE, update); request->addRRset(D2UpdateMessage::SECTION_UPDATE, update);
// Create the FQDN/IP PTR 'add' RR, add the DHCID Rdata // Create the FQDN/IP PTR 'add' RR, add the DHCID Rdata
// then add it to update section. // then add it to update section.
update.reset(new dns::RRset(rev_ip, dns::RRClass::IN(), update.reset(new dns::RRset(rev_ip, dns::RRClass::IN(),
dns::RRType::DHCID(), dns::RRTTL(0))); dns::RRType::DHCID(), lease_ttl));
addDhcidRdata(update); addDhcidRdata(update);
request->addRRset(D2UpdateMessage::SECTION_UPDATE, update); request->addRRset(D2UpdateMessage::SECTION_UPDATE, update);

View File

@@ -427,15 +427,19 @@ void checkAddFwdAddressRequest(NameChangeTransaction& tran) {
// Should be 2 RRs: 1 to add the FQDN/IP and one to add the DHCID RR // Should be 2 RRs: 1 to add the FQDN/IP and one to add the DHCID RR
checkRRCount(request, D2UpdateMessage::SECTION_UPDATE, 2); checkRRCount(request, D2UpdateMessage::SECTION_UPDATE, 2);
// Fetch ttl.
uint32_t ttl = ncr->getLeaseLength();
// First, Verify the FQDN/IP add RR. // First, Verify the FQDN/IP add RR.
ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage:: ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage::
SECTION_UPDATE, 0)); SECTION_UPDATE, 0));
checkRR(rrset, exp_fqdn, dns::RRClass::IN(), exp_ip_rr_type, 0, ncr); checkRR(rrset, exp_fqdn, dns::RRClass::IN(), exp_ip_rr_type, ttl, ncr);
// Now, verify the DHCID add RR. // Now, verify the DHCID add RR.
ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage:: ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage::
SECTION_UPDATE, 1)); SECTION_UPDATE, 1));
checkRR(rrset, exp_fqdn, dns::RRClass::IN(), dns::RRType::DHCID(), 0, ncr); checkRR(rrset, exp_fqdn, dns::RRClass::IN(), dns::RRType::DHCID(),
ttl, ncr);
// Verify there are no RRs in the ADDITIONAL Section. // Verify there are no RRs in the ADDITIONAL Section.
checkRRCount(request, D2UpdateMessage::SECTION_ADDITIONAL, 0); checkRRCount(request, D2UpdateMessage::SECTION_ADDITIONAL, 0);
@@ -483,6 +487,9 @@ void checkReplaceFwdAddressRequest(NameChangeTransaction& tran) {
// adds the new one. // adds the new one.
checkRRCount(request, D2UpdateMessage::SECTION_UPDATE, 2); checkRRCount(request, D2UpdateMessage::SECTION_UPDATE, 2);
// Fetch ttl.
uint32_t ttl = ncr->getLeaseLength();
// Verify the FQDN delete RR. // Verify the FQDN delete RR.
ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage:: ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage::
SECTION_UPDATE, 0)); SECTION_UPDATE, 0));
@@ -491,7 +498,7 @@ void checkReplaceFwdAddressRequest(NameChangeTransaction& tran) {
// Verify the FQDN/IP add RR. // Verify the FQDN/IP add RR.
ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage:: ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage::
SECTION_UPDATE, 1)); SECTION_UPDATE, 1));
checkRR(rrset, exp_fqdn, dns::RRClass::IN(), exp_ip_rr_type, 0, ncr); checkRR(rrset, exp_fqdn, dns::RRClass::IN(), exp_ip_rr_type, ttl, ncr);
// Verify there are no RRs in the ADDITIONAL Section. // Verify there are no RRs in the ADDITIONAL Section.
checkRRCount(request, D2UpdateMessage::SECTION_ADDITIONAL, 0); checkRRCount(request, D2UpdateMessage::SECTION_ADDITIONAL, 0);
@@ -520,6 +527,9 @@ void checkReplaceRevPtrsRequest(NameChangeTransaction& tran) {
// Verify there are no RRs in the PREREQUISITE Section. // Verify there are no RRs in the PREREQUISITE Section.
checkRRCount(request, D2UpdateMessage::SECTION_PREREQUISITE, 0); checkRRCount(request, D2UpdateMessage::SECTION_PREREQUISITE, 0);
// Fetch ttl.
uint32_t ttl = ncr->getLeaseLength();
// Verify the UPDATE Section. // Verify the UPDATE Section.
// It should contain 4 RRs: // It should contain 4 RRs:
// 1. A delete all PTR RRs for the given IP // 1. A delete all PTR RRs for the given IP
@@ -545,13 +555,13 @@ void checkReplaceRevPtrsRequest(NameChangeTransaction& tran) {
ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage:: ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage::
SECTION_UPDATE, 2)); SECTION_UPDATE, 2));
checkRR(rrset, exp_rev_addr, dns::RRClass::IN(), dns::RRType::PTR(), checkRR(rrset, exp_rev_addr, dns::RRClass::IN(), dns::RRType::PTR(),
0, ncr); ttl, ncr);
// Verify the DHCID add RR. // Verify the DHCID add RR.
ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage:: ASSERT_TRUE(rrset = getRRFromSection(request, D2UpdateMessage::
SECTION_UPDATE, 3)); SECTION_UPDATE, 3));
checkRR(rrset, exp_rev_addr, dns::RRClass::IN(), dns::RRType::DHCID(), checkRR(rrset, exp_rev_addr, dns::RRClass::IN(), dns::RRType::DHCID(),
0, ncr); ttl, ncr);
// Verify there are no RRs in the ADDITIONAL Section. // Verify there are no RRs in the ADDITIONAL Section.
checkRRCount(request, D2UpdateMessage::SECTION_ADDITIONAL, 0); checkRRCount(request, D2UpdateMessage::SECTION_ADDITIONAL, 0);