Age | Commit message (Collapse) | Author |
|
* Added DHCPv4 server
* Added more modifiers
* Fixed some bugs
|
|
|
|
|
|
|
|
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 -> []
```
|
|
|
|
|
|
|
|
|
|
|
|
Fixed DHCPv4 listener
There were two bugs in the DHCPv4 client:
* the listener was called *after* the sender
* the listener was not binding to the same interface as the sender, but listening for every UDP packet
This is now fixed.
|
|
|
|
|
|
|
|
stretchr/testify/assert for nicer asserts
|
|
Adds support for constructing INFORM/ACK messages from Apple's Boot
Service Discovery Protocol for netbooting (pxebooting) Apple hardware.
The canonical reference for BSDP is: http://opensource.apple.com/source/bootp/bootp-198.1/Documentation/BSDP.doc
|
|
|
|
|
|
|
|
|