<commit_before># DHCP Configuration

## Overview

The DHCP configuration file syntax is a custom syntax loosely based the DHCPD format. The sample DHCP configuration includes explanations and examples of the possible formats. The DHCP server is customized for this specific application. It adheres to the base DHCP RFC, but not all DHCP options are implemented. The available options are:

- subnet-mask
- router
- domain-name-server
- domain-name
- broadcast-address
- network-time-protocol-servers

Options which allow for multiple values such as domain-name-server and network-time-protocol-servers, must be a list of comma separated values. E.g: `option domain-name-server 10.1.0.1, 10.1.0.2`.

To specify multiple scopes in a single subnet, each scope must be in its own pool. This is contrary to DHCPD where a single pool can contain multiple range statements.

## Global

Sample:

```
global
    option domain-name example.com
    server-identifier 10.0.0.1

    registered
        free-lease-after 172800
        default-lease-time 86400
        max-lease-time 86400
        option domain-name-server 10.1.0.1, 10.1.0.2
    end

    unregistered
        free-lease-after 600
        default-lease-time 360
        max-lease-time 360
        option domain-name-server 10.0.0.1
    end
end
```

The global section contains three subsections. The "root" which is any statement before a `registered` or `unregistered` keyword. Options specified here will be applied to every subnet regardless of registration status unless overridden elsewhere. Global root specific statements are:

    - `server-identifier` - The IP address of the DHCP server

Registered and unregistered blocks may be located inside a global or network block. Settings here will apply to either registered or unregistered leases either globally (if in global block) or for any containing subnets. These blocks may contain any option along with the lease time settings.

## Options

Most options correspond to a DHCP option and begin with the keyword `option`. The available options are:

    - `subnet-mask`
    - `router`
    - `domain-name-server` - May take a comma separate list of IP addresses
    - `domain-name`
    - `broadcast-address`
    - `network-time-protocol-servers` - May take a comma separate list of IP addresses

The following options do NOT begin with the `option` keyword:

    - `default-lease-time` - The amount of time in seconds a lease will be active for. Defaults to 12 hours.
    - `max-lease-time` - The maximum amount of time in seconds a lease will be active for. Defaults to 12 hours.
    - `free-lease-after` - The time in seconds that a lease will be paired with a client MAC address. If a client requests an address after this time, it is not guaranteed they will be given the same lease. This option can only be specified inside a registered/unregistered block within the global block.<commit_msg>Corrected list format<commit_after># DHCP Configuration

## Overview

The DHCP configuration file syntax is a custom syntax loosely based the DHCPD format. The sample DHCP configuration includes explanations and examples of the possible formats. The DHCP server is customized for this specific application. It adheres to the base DHCP RFC, but not all DHCP options are implemented. Implemented options are described below.

Options which allow for multiple values such as domain-name-server and network-time-protocol-servers, must be a list of comma separated values. E.g: `option domain-name-server 10.1.0.1, 10.1.0.2`.

To specify multiple scopes in a single subnet, each scope must be in its own pool. This is contrary to DHCPD where a single pool can contain multiple range statements. See the Subnet and Pool sections for more.

## Global

Sample:

```
global
    option domain-name example.com
    server-identifier 10.0.0.1

    registered
        free-lease-after 172800
        default-lease-time 86400
        max-lease-time 86400
        option domain-name-server 10.1.0.1, 10.1.0.2
    end

    unregistered
        free-lease-after 600
        default-lease-time 360
        max-lease-time 360
        option domain-name-server 10.0.0.1
    end
end
```

The global section contains three subsections. The "root" which is any statement before a `registered` or `unregistered` keyword. Options specified here will be applied to every subnet regardless of registration status unless overridden elsewhere. Global root specific statements are:

- `server-identifier` - The IP address of the DHCP server

Registered and unregistered blocks may be located inside a global or network block. Settings here will apply to either registered or unregistered leases either globally (if in global block) or for any containing subnets. These blocks may contain any option along with the lease time settings.

## Options

Most options correspond to a DHCP option and begin with the keyword `option`. The available options are:

- `subnet-mask`
- `router`
- `domain-name-server` - May take a comma separate list of IP addresses
- `domain-name`
- `broadcast-address`
- `network-time-protocol-servers` - May take a comma separate list of IP addresses

The following options do NOT begin with the `option` keyword:

- `default-lease-time` - The amount of time in seconds a lease will be active for. Defaults to 12 hours.
- `max-lease-time` - The maximum amount of time in seconds a lease will be active for. Defaults to 12 hours.
- `free-lease-after` - The time in seconds that a lease will be paired with a client MAC address. If a client requests an address after this time, it is not guaranteed they will be given the same lease. This option can only be specified inside a registered/unregistered block within the global block.
{'fraction_non_alphanumeric': 0.05881326352530541, 'fraction_numerical': 0.020593368237347295, 'mean_word_length': 3.494901960784314, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 12, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5276279', 'n_tokens_mistral': 1584, 'n_tokens_neox': 1446, 'n_words': 762}