Commit Graph

267 Commits

Author SHA1 Message Date
Dmitri Dolguikh
11a8e61c10 For compatibility with 1.7 replaced rand.Uint64() call with calls to rand.Uint32() 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
43551d9de3 Fixed a bug around setting of server duid 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
5f428cfb4a moar tests for "dns servers" option generation 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
6c11f1e722 added support for generation of "dns servers" option 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
b78d515ee1 Added cli options for address pool configuration 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
794097f861 Merged MakeMsgReplyWithNoAddrsAvailable and MakeMsgReply methods 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
c0ce892172 extracted packet builder into a dedicated file 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
a3a8cf5188 added tests to verify generation of replies when no ip addresses can be assigned 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
2c6281a8fd Correct replies to solicit and request messages when address pool is exhausted are now generated 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
76a6f8118b fixed broken tests 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
1cf3ef9b5b Added handling of multiple IANAs per solicit/request/release message 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
f89f6af9a6 added support for setting server preference option 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
4d45c38c40 replace channel-based lock with a mutex 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
11fbcd1ae1 added debug-level logging 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
2c42665a0b added ipv6api command 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
da6402caf7 Bootfile urls can be retrieved via remote api calls now 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
02db3ab76d extracted packet generation into a dedicated class 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
ea2d223a25 clients are now given ip addresses from an address pool 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
f3faa8e10a added packet-generation tests 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
c39e902fd4 and moar testability changes 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
f00c8cae74 moar changes around packet construction to make testing easier 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
bf8701a8c5 Made dhcpv6 packet easier to test 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
b6741d78b8 added options tests 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
ffff3b81ba a reminder of the cli startup command 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
cb79b8eaa4 Added bootipv6 command 2018-02-05 12:33:17 -08:00
Dmitri Dolguikh
3a5808cb30 first stab at dhcpv6 support 2018-02-05 12:33:17 -08:00
David Anderson
8834cc3e94 Update the dependency set with a recent version of dep. 2018-02-04 19:30:25 -08:00
David Anderson
0fe0d3e719 Delete the api-example binary I accidentally committed a while ago. 2018-02-04 19:22:58 -08:00
David Anderson
ff3b2f6fd6 Refactor firmware identification to be a bit easier to follow. #63 2018-02-04 17:56:00 -08:00
David Anderson
b7411f3ed3 Only boot with ipxe.pxe if we're chainloading from another iPXE. #63
undionly.kpxe doesn't work if you chainload from a native iPXE, but it's
required for physical machines with NICs that iPXE doesn't natively
support.

In my previous attempt to handle Virtualbox's crippled iPXE, I switched
all BIOS-based boots to use ipxe.pxe. This was a bad idea, so now instead
we specifically recognize third-party iPXE builds, and only chainload
*those* with ipxe.pxe, and stick with undionly.kpxe for the rest.
2018-02-04 14:41:09 -08:00
David Anderson
a44cef6d7b Add an advanced option to pass in a raw iPXE script.
The feature is heavily laced with warnings and a complete lack of
promises around future compatibility. But within those parameters,
it might allow some people to do cool things.

Fixes #60.
2018-02-03 21:25:55 -08:00
Matt Layher
c41aa79265 dhcp4: parse transaction ID as a byte slice 2018-02-03 11:23:32 -08:00
David Anderson
bc300c7140 Rename README.testing to README.testing.md so that github formats it. 2018-01-15 19:17:56 -08:00
David Anderson
029be8d339 Force machines to chainload through Pixiecore's embedded iPXE.
This guarantees that we load the real OS from an iPXE with a known
featureset, rather than rely on the firmware iPXEs to be correct.

Also switch to ipxe.pxe for BIOS boots instead of undionly.kpxe.

ipxe.pxe works when you chainload from one iPXE to another, whereas
undionly.kpxe encounters some kind of poorly explained bug where
it loses the ability to configure networking.

Tested against the following configurations:
 - VirtualBox + BIOS w/ iPXE
 - VirtualBox + BIOS w/ Intel UNDI
 - VirtualBox + EFI
 - KVM + SeaBIOS w/ iPXE
 - KVM + OVMF (EFI)
 - Dell R610 + Dell BIOS/PXE

Fixes #51, fixes #52.
2018-01-15 19:17:56 -08:00
David Anderson
5f8e425f57 Add a quick command to boot CoreOS. 2018-01-12 21:05:11 -08:00
Jinank Jain
ba3694a23b misc: Remove glide and use dep
Since glide is deprecated as a dependency manager for go
project and dep is now officially supported so it would
be a good idea to move to dep
2017-12-31 14:38:36 -06:00
David Anderson
81fbed5acf Also check foor bzImage support in the ProxyDHCP stage. #51
Virtualbox inexplicably ships with an iPXE image that knows
how to speak HTTP, but cannot handle bzImage files. This is a
quick and dirty fix for that specific issue, while I work on
the more permanent fix of always chainloading into a known
good iPXE.
2017-12-24 19:28:41 -08:00
David Anderson
c813cd6b8e Update Travis to run on Go 1.8+1.9. 2017-12-24 17:34:30 -08:00
David Anderson
6cd17867fc Delete the UI. It's ugly, not very useful, and afaik nobody uses it. 2017-12-24 17:33:18 -08:00
David Anderson
e8185cf62d Use cmp.Diff to compare pcap packets.
This fixes a spurious failure from reflect.DeepEqual.
2017-12-24 17:22:09 -08:00
David Anderson
bff58e14b3 Update the glide lock to newer versions. 2017-12-24 17:19:14 -08:00
David Anderson
18af042ed8 Update the embedded copy of iPXE. 2017-12-24 17:12:15 -08:00
Anatoli Babenia
7eee7d4832 Rename pixiecore quick netboot into pixiecore quick xyz
This places the option below OS specific installers and
makes the command explicit.
2017-12-24 16:07:16 -08:00
Anatoli Babenia
7144ad4cdc Add netboot.xyz into quick boot options
Fixes #46
2017-12-24 16:07:16 -08:00
pancho horrillo
b8b3aeb641 Replace ENV with ARG at Dockerfile for vars that should not be persisted
Vars declared via the ENV mechanism will also be present at run time, polluting
somewhat the environment.  Since both PIXIECORE_{SANDBOX,CONTEXT} are only
needed at build time, using the ARG form is a cleaner solution.

See ¹ for reference.

¹: https://docs.docker.com/engine/reference/builder/#arg
2017-08-16 10:55:09 -07:00
pancho horrillo
7ffd9d9f64 Bump alpine version to 3.6
Alpine 3.6 is readily available, and provides go 1.8.1
2017-06-01 20:13:15 -07:00
David Anderson
e78af6b0e8 dhcp4: only run the linuxConn tests on linux.
Seems obvious when you say it like that! Fixes #41.
2017-06-01 20:11:50 -07:00
David Anderson
eb35906ff0 netboot: update vendored dependency versions. 2017-06-01 20:09:08 -07:00
David Anderson
e9e2bb6f2d dhcp4: avoid reusing bs between the writing and reading tests.
Although it looks like the sequencing of writing bs to the socket
and reusing the slice for the read test is guaranteed by there being
a receive from the socket in between, the race detector disagrees, and
found a race.
2017-06-01 20:07:28 -07:00
David Anderson
565eb761d1 Use a NAME= env as a proxy for naming the deploy tasks. 2017-05-21 00:01:51 -07:00