|
This moves the implementations of the BindToInterface to the interfaces/
package, since they aren't ipv4-specific.
The BindToInterface function remains in dhcpv4 (simply wraps the one in
interfaces) to keep backwards-compatibility
Additionally, fold bindtodevice_darwin into bindtodevice_bsd: darwin is
mostly a BSD, and happens to support IP_RECVIF, so use that instead of
IP_BOUND_IF, which only affects sends, not receives according to the
code comments in bsd/netinet/ip_output.c as well as being v4-only
Signed-off-by: Anatole Denis <natolumin@unverle.fr>
|
|
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 -> []
```
|