| Tim Windelschmidt | 6d33a43 | 2025-02-04 14:34:25 +0100 | [diff] [blame] | 1 | // Copyright The Monogon Project Authors. |
| Lorenz Brun | 56a7ae6 | 2020-10-29 11:03:30 +0100 | [diff] [blame] | 2 | // SPDX-License-Identifier: Apache-2.0 |
| Lorenz Brun | 56a7ae6 | 2020-10-29 11:03:30 +0100 | [diff] [blame] | 3 | |
| Serge Bazanski | 216fe7b | 2021-05-21 18:36:16 +0200 | [diff] [blame] | 4 | // Package transport contains Linux-based transports for the DHCP broadcast and |
| 5 | // unicast specifications. |
| Lorenz Brun | 56a7ae6 | 2020-10-29 11:03:30 +0100 | [diff] [blame] | 6 | package transport |
| 7 | |
| 8 | import ( |
| 9 | "errors" |
| 10 | "fmt" |
| 11 | "net" |
| 12 | ) |
| 13 | |
| Tim Windelschmidt | 51daf25 | 2024-04-18 23:18:43 +0200 | [diff] [blame] | 14 | var ErrDeadlineExceeded = errors.New("deadline exceeded") |
| Lorenz Brun | 56a7ae6 | 2020-10-29 11:03:30 +0100 | [diff] [blame] | 15 | |
| 16 | func NewInvalidMessageError(internalErr error) error { |
| 17 | return &InvalidMessageError{internalErr: internalErr} |
| 18 | } |
| 19 | |
| 20 | type InvalidMessageError struct { |
| 21 | internalErr error |
| 22 | } |
| 23 | |
| 24 | func (i InvalidMessageError) Error() string { |
| 25 | return fmt.Sprintf("received invalid packet: %v", i.internalErr.Error()) |
| 26 | } |
| 27 | |
| 28 | func (i InvalidMessageError) Unwrap() error { |
| 29 | return i.internalErr |
| 30 | } |
| 31 | |
| 32 | func deadlineFromTimeout(err error) error { |
| Tim Windelschmidt | af821c8 | 2024-04-23 15:03:52 +0200 | [diff] [blame] | 33 | var timeoutErr net.Error |
| 34 | if errors.As(err, &timeoutErr) && timeoutErr.Timeout() { |
| Tim Windelschmidt | 51daf25 | 2024-04-18 23:18:43 +0200 | [diff] [blame] | 35 | return ErrDeadlineExceeded |
| Lorenz Brun | 56a7ae6 | 2020-10-29 11:03:30 +0100 | [diff] [blame] | 36 | } |
| 37 | return err |
| 38 | } |