summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/bsdp
AgeCommit message (Collapse)Author
2018-10-07DHCPv4: syscall -> x/sys/unixSean Karlage
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 -> [] ```
2018-10-03BSDP: Fix MessageTypeFromPacket to return a pointerSean Karlage
As @insomiacslk pointed out in #161, it's probably better to return a pointer rather than a (MessageType, bool) combo.
2018-10-01add commentSean Karlage
2018-10-01BSDP: Add MessageTypeFromPacket helperSean Karlage
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).
2018-09-29BSDP: Fix parsing offset for boot image listsSean Karlage
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.
2018-08-19Added String methods for types (#140)insomniac
* Added String methods for types * Reverted change on bsdp.OptionCode
2018-08-15refactor tests to take advantage of new helper functionsSean Karlage
2018-08-15Merge branch 'master' into bsdp-acksSean Karlage
2018-08-15Put back NewInformListForInterface to maintain compatSean Karlage
2018-08-15Merge branch 'master' into dhcpv4-moar-testsSean Karlage
2018-08-15Add nil check for Images sliceSean Karlage
2018-08-14BSDP: Add code to generate ACKs for INFORMsSean Karlage
2018-08-13BSDP: Exchange returns list of pointers, not list of objectsAndrea Barberio
2018-07-29Add some helper tools for testsSean Karlage
Adds new `OptionGetter` interface that helps when asserting that certain packets/vendor-specific opts contain specific options.
2018-07-29DHCPv4: Refactor methods for easier testingSean Karlage
This refactors the input parameters for construction DISCOVER/INFORM* packets so that it's easier to write unit tests for DHCPv4 and BSDP methods. It also adds a bunch of unit tests for both packages and rounds out their test coverage.
2018-07-29add NewReplyFromRequest (#100)Pablo Mazzini
2018-07-27[DHCPv4] BroadcastSendReceive now can wait for specific reply types (#95)insomniac
2018-07-27BSDP: Refactor to use dhcpv4.GetOneOption (#94)Sean Karlage
Refactors BSDP code to use `dhcpv4.GetOneOption` instead of manually searching through the list of options.
2018-04-18Fixed DHCPv4 listener (#37)insomniac
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.
2018-03-30Remove build tags (#27)Sean Karlage
Removes build tags from BSDP and breaks vendor class identifier into OS-specific implementations so it is easier to integrate bsdp with other libs.
2018-03-26Add some more specific bsdp options + vendor specific implementation (#21)Sean Karlage
Add some more specific options + vendor specific implementation
2018-03-22Add vendor specific information optionSean Karlage
2018-03-22Add specific BSDP optionsSean Karlage
2018-03-16Add more specific dhcpv4 options (#17)Sean Karlage
Added several DHCPv4 options
2018-03-13Add OptionGeneric, comment out other code so tests compile/passSean Karlage
2018-03-10Move Exchange back to method on client, rebaseSean Karlage
2018-03-10Refactor client code, add timeout capabilitiesSean Karlage
2018-03-07Fixed build tag for darwin-only bsdp packageAndrea Barberio
2018-03-06Refactor tests to use stretchr/testify/requireSean Karlage
2018-03-06Fixed types for BSDP tooAndrea Barberio
2018-03-05Move bsdp functionality to its own subpackage. Bring in ↵Sean Karlage
stretchr/testify/assert for nicer asserts