blob: 9a5ff143b79c878f4f2bf4ee721f9cc7662dfa10 [file] [log] [blame]
Tim Windelschmidt6d33a432025-02-04 14:34:25 +01001// Copyright The Monogon Project Authors.
Lorenz Brun56a7ae62020-10-29 11:03:30 +01002// SPDX-License-Identifier: Apache-2.0
Lorenz Brun56a7ae62020-10-29 11:03:30 +01003
Serge Bazanski216fe7b2021-05-21 18:36:16 +02004// Package transport contains Linux-based transports for the DHCP broadcast and
5// unicast specifications.
Lorenz Brun56a7ae62020-10-29 11:03:30 +01006package transport
7
8import (
9 "errors"
10 "fmt"
11 "net"
12)
13
Tim Windelschmidt51daf252024-04-18 23:18:43 +020014var ErrDeadlineExceeded = errors.New("deadline exceeded")
Lorenz Brun56a7ae62020-10-29 11:03:30 +010015
16func NewInvalidMessageError(internalErr error) error {
17 return &InvalidMessageError{internalErr: internalErr}
18}
19
20type InvalidMessageError struct {
21 internalErr error
22}
23
24func (i InvalidMessageError) Error() string {
25 return fmt.Sprintf("received invalid packet: %v", i.internalErr.Error())
26}
27
28func (i InvalidMessageError) Unwrap() error {
29 return i.internalErr
30}
31
32func deadlineFromTimeout(err error) error {
Tim Windelschmidtaf821c82024-04-23 15:03:52 +020033 var timeoutErr net.Error
34 if errors.As(err, &timeoutErr) && timeoutErr.Timeout() {
Tim Windelschmidt51daf252024-04-18 23:18:43 +020035 return ErrDeadlineExceeded
Lorenz Brun56a7ae62020-10-29 11:03:30 +010036 }
37 return err
38}