erratic

package
v0.0.0-...-36c2227 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 14, 2024 License: Apache-2.0 Imports: 13 Imported by: 0

README

erratic

Name

erratic - a plugin useful for testing client behavior.

Description

erratic returns a static response to all queries, but the responses can be delayed, dropped or truncated. The erratic plugin will respond to every A or AAAA query. For any other type it will return a SERVFAIL response (except AXFR). The reply for A will return 192.0.2.53 (RFC 5737), for AAAA it returns 2001:DB8::53 (RFC 3849). For an AXFR request it will respond with a small zone transfer.

Syntax

erratic {
    drop [AMOUNT]
    truncate [AMOUNT]
    delay [AMOUNT [DURATION]]
}
  • drop: drop 1 per AMOUNT of queries, the default is 2.
  • truncate: truncate 1 per AMOUNT of queries, the default is 2.
  • delay: delay 1 per AMOUNT of queries for DURATION, the default for AMOUNT is 2 and the default for DURATION is 100ms.

In case of a zone transfer and truncate the final SOA record isn't added to the response.

Ready

This plugin reports readiness to the ready plugin.

Examples

example.org {
    erratic {
        drop 3
    }
}

Or even shorter if the defaults suit you. Note this only drops queries, it does not delay them.

example.org {
    erratic
}

Delay 1 in 3 queries for 50ms

example.org {
    erratic {
        delay 3 50ms
    }
}

Delay 1 in 3 and truncate 1 in 5.

example.org {
    erratic {
        delay 3 5ms
        truncate 5
    }
}

Drop every second query.

example.org {
    erratic {
        drop 2
        truncate 2
    }
}

See Also

RFC 3849 and RFC 5737.

Documentation

Overview

Package erratic implements a plugin that returns erratic answers (delayed, dropped).

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Erratic

type Erratic struct {
	// contains filtered or unexported fields
}

Erratic is a plugin that returns erratic responses to each client.

func (*Erratic) AutoPath

func (e *Erratic) AutoPath(state request.Request) []string

AutoPath implements the AutoPathFunc call from the autopath plugin.

func (*Erratic) Name

func (e *Erratic) Name() string

Name implements the Handler interface.

func (*Erratic) Ready

func (e *Erratic) Ready() bool

Ready returns true if the number of received queries is in the range [3, 5). All other values return false. To aid in testing we want to this flip between ready and not ready.

func (*Erratic) ServeDNS

func (e *Erratic) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error)

ServeDNS implements the plugin.Handler interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL