Age | Commit message (Collapse) | Author |
|
|
|
|
|
* Added DHCPv4 server
* Added more modifiers
* Fixed some bugs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statuscodes: Add RFC 5007/5460/7653/8156 status codes
|
|
|
|
* Add some more DHCPv6 option tests.
* Remove AddRequestedOption() duplicate detection test due to failing on Go 1.9
|
|
|
|
dhcpv4: fix but in Exchange where a nil packet is returned if send fails
|
|
|
|
Fixes #156
Build a simple client like so:
```
package main
import (
"fmt"
"time"
"github.com/insomniacslk/dhcp/dhcpv4"
)
func main() {
client := dhcpv4.Client{ReadTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second}
conversation, err := client.Exchange("en0", nil)
if err != nil {
fmt.Println(err)
}
for _, m := range conversation {
fmt.Println(m.Summary())
}
}
```
and run:
```
$ sudo ./main
Password:
DHCPv4
opcode=BootRequest
hwtype=Ethernet
hwaddrlen=6
hopcount=0
transactionid=0xabfad715
numseconds=0
flags=Broadcast (0x8000)
clientipaddr=0.0.0.0
youripaddr=0.0.0.0
serveripaddr=0.0.0.0
gatewayipaddr=0.0.0.0
clienthwaddr=8c:85:90:20:2e:33
serverhostname=
bootfilename=
options=
DHCP Message Type -> DISCOVER
Parameter Request List -> [Subnet Mask, Router, Domain Name, Domain Name Server]
End -> []
DHCPv4
opcode=BootReply
hwtype=Ethernet
hwaddrlen=6
hopcount=0
transactionid=0xabfad715
numseconds=0
flags=Broadcast (0x8000)
clientipaddr=0.0.0.0
youripaddr=192.168.0.105
serveripaddr=0.0.0.0
gatewayipaddr=0.0.0.0
clienthwaddr=8c:85:90:20:2e:33
serverhostname=
bootfilename=
options=
DHCP Message Type -> OFFER
Server Identifier -> 192.168.0.1
IP Addresses Lease Time -> 5648
Subnet Mask -> ffffff00
Routers -> 192.168.0.1
Domain Name Servers -> 8.8.8.8, 8.8.4.4
End -> []
DHCPv4
opcode=BootRequest
hwtype=Ethernet
hwaddrlen=6
hopcount=0
transactionid=0xabfad715
numseconds=0
flags=Broadcast (0x8000)
clientipaddr=0.0.0.0
youripaddr=0.0.0.0
serveripaddr=192.168.0.1
gatewayipaddr=0.0.0.0
clienthwaddr=8c:85:90:20:2e:33
serverhostname=
bootfilename=
options=
DHCP Message Type -> REQUEST
Requested IP Address -> 192.168.0.105
Server Identifier -> 192.168.0.1
End -> []
DHCPv4
opcode=BootReply
hwtype=Ethernet
hwaddrlen=6
hopcount=0
transactionid=0xabfad715
numseconds=0
flags=Broadcast (0x8000)
clientipaddr=0.0.0.0
youripaddr=192.168.0.105
serveripaddr=0.0.0.0
gatewayipaddr=0.0.0.0
clienthwaddr=8c:85:90:20:2e:33
serverhostname=
bootfilename=
options=
DHCP Message Type -> ACK
Server Identifier -> 192.168.0.1
IP Addresses Lease Time -> 7200
Subnet Mask -> ffffff00
Routers -> 192.168.0.1
Domain Name Servers -> 8.8.8.8, 8.8.4.4
End -> []
```
|
|
* Dynamically determine loopback interface for server test
"lo" isn't configured everywhere. In FreeBSD for example, TestServerActivateAndServe() fails as the loopback address is "lo0", not "lo".
Also, I don't believe the Zone is required for net.UDPAddr as ::1 is being used, not an fe80:: address.
* Add error handling to getLoopbackInterface()
- My editor also snuck in some space indentation
|
|
|
|
* dhcpv4: Add OptRootPath
Adds a root path option that supports DHCPv4 option 17
* Add root path parsing to giant option parsing switch
|
|
As @insomiacslk pointed out in #161, it's probably better to return a
pointer rather than a (MessageType, bool) combo.
|
|
BSDP: Add MessageTypeFromPacket helper
|
|
|
|
This is a helper function to extract the BSDP message type from a given
`dhcpv4.DHCPv4` packet structure. It's useful in helping to identify
what kind of BSDP packet you're dealing with (since the distinction is
only made in one of the vendor-specific options encapsulated in Option
43).
|
|
|
|
While parsing boot images, the current code reads to the end of the data
stream; however, this could lead to reading past the boot image option
and reading into the next option. Instead, contain how far the option
parsing code reads by only looking at the max length specified in the
option.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
As per https://www.ietf.org/rfc/rfc3633.txt section 16, status code 6 has been reserved for "Delegating router has no prefixes available to assign to the IAPD(s)"
|
|
NewReplyFromDHCPv6Message: reply to information request
|
|
|
|
|
|
|
|
|
|
* Update README.md
* Update README.md (#150)
|
|
|
|
|
|
|
|
|
|
|
|
|