| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // Copyright 2018-present the CoreDHCP Authors. All rights reserved
- // This source code is licensed under the MIT license found in the
- // LICENSE file in the root directory of this source tree.
- package netmask
- import (
- "net"
- "testing"
- "github.com/insomniacslk/dhcp/dhcpv4"
- "github.com/stretchr/testify/assert"
- )
- func TestCheckValidNetmask(t *testing.T) {
- assert.True(t, checkValidNetmask(net.IPv4Mask(255, 255, 255, 0)))
- assert.True(t, checkValidNetmask(net.IPv4Mask(255, 255, 0, 0)))
- assert.True(t, checkValidNetmask(net.IPv4Mask(255, 0, 0, 0)))
- assert.True(t, checkValidNetmask(net.IPv4Mask(0, 0, 0, 0)))
- assert.False(t, checkValidNetmask(net.IPv4Mask(0, 255, 255, 255)))
- assert.False(t, checkValidNetmask(net.IPv4Mask(0, 0, 255, 255)))
- assert.False(t, checkValidNetmask(net.IPv4Mask(0, 0, 0, 255)))
- }
- func TestHandler4(t *testing.T) {
- // set plugin netmask
- netmask = net.IPv4Mask(255, 255, 255, 0)
- // prepare DHCPv4 request
- req := &dhcpv4.DHCPv4{}
- resp := &dhcpv4.DHCPv4{
- Options: dhcpv4.Options{},
- }
- // if we handle this DHCP request, the netmask should be one of the options
- // of the result
- result, stop := Handler4(req, resp)
- assert.Same(t, result, resp)
- assert.False(t, stop)
- assert.EqualValues(t, netmask, resp.Options.Get(dhcpv4.OptionSubnetMask))
- }
- func TestSetup4(t *testing.T) {
- // valid configuration
- _, err := setup4("255.255.255.0")
- assert.NoError(t, err)
- assert.EqualValues(t, netmask, net.IPv4Mask(255, 255, 255, 0))
- // no configuration
- _, err = setup4()
- assert.Error(t, err)
- // unspecified netmask
- _, err = setup4("0.0.0.0")
- assert.Error(t, err)
- // ipv6 prefix
- _, err = setup4("ff02::/64")
- assert.Error(t, err)
- // invalid netmask
- _, err = setup4("0.0.0.255")
- assert.Error(t, err)
- }
|