#!/bin/sh
#
# $OpenBSD: record.sh,v 1.1 2018/05/09 19:34:53 anton Exp $
#
# Copyright (c) 2018 Anton Lindqvist <anton@openbsd.org>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

cat <<! >$CONF
nameserver ${ADDR1}
# Unknown type.
record MX t1.example.com. 1.1.1.1
# Missing trailing dot.
record A t1.example.com 1.1.1.1
# Name too short.
record A a 1.1.1.1
!

$ENV $REBOUND -c $CONF -l $ADDR2

R=$(resolve -W 1 -t MX t1.example.com $ADDR2)
asserteq ";; connection timed out; no servers could be reached" "$R" \
	"must not be resolved by rebound"

R=$(resolve -W 1 -t A t1.example.com $ADDR2)
asserteq ";; connection timed out; no servers could be reached" "$R" \
	"must not be resolved by rebound"

R=$(resolve -W 1 -t A a $ADDR2)
asserteq ";; connection timed out; no servers could be reached" "$R" \
	"must not be resolved by rebound"

pkillw "^${REBOUND}"

cat <<! >$CONF
nameserver ${ADDR1}
record A t1.example.com. 1.1.1.1
record A t2.example.com. 2.2.2.2
!

$ENV $NS -l $ADDR1 A t3.example.com. 3.3.3.3

$ENV $REBOUND -c $CONF -l $ADDR2

R=$(resolve -t A t1.example.com $ADDR2)
asserteq "t1.example.com has address 1.1.1.1" "$R" "must be resolved by rebound"

R=$(resolve -t PTR 1.1.1.1 $ADDR2)
asserteq "1.1.1.1.in-addr.arpa domain name pointer t1.example.com." "$R" \
	"must be resolved by rebound"

R=$(resolve -t A t2.example.com $ADDR2)
asserteq "t2.example.com has address 2.2.2.2" "$R" "must be resolved by rebound"

R=$(resolve -t PTR 2.2.2.2 $ADDR2)
asserteq "2.2.2.2.in-addr.arpa domain name pointer t2.example.com." "$R" \
	"must be resolved by rebound"

R=$(resolve -t A t3.example.com $ADDR2)
asserteq "t3.example.com has address 3.3.3.3" "$R" \
	"must be resolved by rebound-ns"

R=$(resolve -t A t4.example.com $ADDR2)
asserteq "Host t4.example.com not found: 3(NXDOMAIN)" "$R" \
	"must not be resolved by rebound nor rebound-ns"