// If we sent out ECS, we can also expect to see a return with or without ECS, the absent case is
// not handled explicitly. If we do see a ECS in the reply, the source part *must* match with
- // what we sent out See https://www.rfc-editor.org/rfc/rfc7871#section-7.3
+ // what we sent out. See https://www.rfc-editor.org/rfc/rfc7871#section-7.3
if (subnetOpts) {
for (const auto& opt : edo.d_options) {
if (opt.first == EDNSOptionCode::ECS) {
def testSendECSInvalidScope(self):
# test that the recursor does not cache with a more specific scope than the source it sent
- expected = dns.rrset.from_text(nameECSInvalidScope, ttlECS, dns.rdataclass.IN, 'TXT', '192.0.2.0/24')
+ expected = dns.rrset.from_text(nameECSInvalidScope, ttlECS, dns.rdataclass.IN, 'TXT', '192.0.2.0/24/25')
- ecso = clientsubnetoption.ClientSubnetOption('192.0.2.1', 32)
+ ecso = clientsubnetoption.ClientSubnetOption('192.0.2.1', 24)
query = dns.message.make_query(nameECSInvalidScope, 'TXT', 'IN', use_edns=True, options=[ecso], payload=512)
self.sendECSQuery(query, expected)
# Send a scope more specific than the received source for nameECSInvalidScope
if request.question[0].name == dns.name.from_text(nameECSInvalidScope):
- ecso = clientsubnetoption.ClientSubnetOption("192.0.42.42", 32, 32)
+ ecso = clientsubnetoption.ClientSubnetOption("192.0.2.1", 24, 25)
+ text += "/25"
else:
ecso = clientsubnetoption.ClientSubnetOption(self.ipToStr(option), option.mask, option.mask)