1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-07 18:27:04 +03:00
Commit Graph

13275 Commits

Author SHA1 Message Date
Patrik Flykt
8c00042c93 dhcp: Handle received DHCP Offer message
Create a function for handling the full IP, UDP and DHCP packet
and tie it to the main loop. Verify IP and UDP headers and checksum.
Creat a new lease structure with using the values supplied in the
DHCP message. Free the lease structure when client is stopped.

Split out socket handling into a creation and a sending part. As a
result modify the test code.
2013-12-12 11:43:34 -05:00
Patrik Flykt
d3d8ac2f2b dhcp: Add timeout and main loop support
Require a main loop to be set when creating a DHCP client. Set up
a timer to resend DHCP Discover messages and add a 0-2 second
delay to the timeout value. Move to state Selecting after successful
sending of a Discover message.
2013-12-12 11:43:34 -05:00
Patrik Flykt
117539f8b7 build: Add dependency on libsystemd-bus needed for main loop 2013-12-12 11:43:34 -05:00
Patrik Flykt
bbdf06d9f2 dhcp: Add function to stop the DHCP client
The client is stopped and brought back to its initial state.
2013-12-12 11:43:34 -05:00
Patrik Flykt
f5a70de7a9 dhcp: Support seconds elapsed since start of DHCP negotiation
It was noticed by Grant Erickson in ConnMan commit
95e15c09350acf58d4707056ae2614570883ef66 that:

   "Certain DHCP servers, such as that implemented in Mac OS X
    (< 10.7) for its "Internet Sharing" feature, refuse to issue
    a DHCP lease to clients that have not set a non-zero value
    in their DISCOVER or REQUEST packets."
2013-12-12 11:43:34 -05:00
Patrik Flykt
290c7324ca dhcp: Add test for discover DHCP packet creation
Set a fake MAC address and emulate raw packet sending. When the buffer
containing the Discover message is received, check selected IP and
UDP headers and compute IP header and UDP message checksums. Also
send the DHCP message for option parsing and expect a successful
outcome.
2013-12-12 11:43:34 -05:00
Patrik Flykt
e1c244dea0 build: Add libsystemd-dhcp 2013-12-12 11:43:34 -05:00
Patrik Flykt
46a66b794a dhcp: Add DHCP discover sending
On starting the client, use the supplied interface mac address and create
a transaction id. Puzzle together an IP/UDP/DHCP Discover message, compute
checksums and send it out as a raw packet.

Create an additional function that constructs default options common to
all DHCP messages.

Set the DHCP Client ID option as noticed by Grant Erickson in ConnMan
commit b18d9798b3a0ae46ed87d6d2be8d5a474bf3ab1e:

   "Some Internet gateways and Wi-Fi access points are unhappy when the
    DHCPv4 client-id option (61) is missing and will refuse to issue a
    DHCP lease."
2013-12-12 11:43:34 -05:00
Patrik Flykt
8b4a96932d dhcp: Add function for sending a raw packet
Open a packet socket, create a link level header, send packet and
close socket. Adding it to a separate file makes testing of the
DHCP sending much easier, as the test program can supply any socket
to the DHCP client code.
2013-12-12 11:43:34 -05:00
Patrik Flykt
e88bc7958c shared: Add struct sockaddr_ll to sockaddr_union 2013-12-12 11:43:34 -05:00
Patrik Flykt
39b7f59600 dhcp: Add test function for computing checksum 2013-12-12 11:43:34 -05:00
Patrik Flykt
d8b61a1dc9 dhcp: Add option append tests
Add checks for invalid lengths and parameters when using the option
appending function. Add also checks for adding options, see to it
that the resulting array is identical to the array of options added.
2013-12-12 11:43:34 -05:00
Patrik Flykt
a10c375e02 dhcp: Add tests for DHCP options, file and sname fields
Add a structure describing the DHCP file, sname and trailing options
fields. Create a messge holding these fields and call the internal
option parsing function.

In the test callback function verify that only regular options are
passed and figure out which part of the DHCP message is the one that
is being processed. As the test program knows the full contents of
the test options in the test structure, skip all non-regular fields
and verify that the option provided to the callback indeed is the
one expected. Check also if non-regular option fields are to be
ignored in the end of the option field as the callback is not called
again and the final check when the whole message has been processed
needs to be successful.

Add a boolean flag for pretty-printing, anticipate there will be a
nice option to toggle it in the future.
2013-12-12 11:43:33 -05:00
Patrik Flykt
78628cd273 build: Add DHCP option test 2013-12-12 11:43:33 -05:00
Patrik Flykt
a0ae95c9be dhcp: Add buffer length and invalid cookie tests for DHCP options
Create an initial simple test program for these two cases.
2013-12-12 11:43:33 -05:00
Patrik Flykt
524cf45894 dhcp: Add option appending and parsing
Add functions to append and parse DHCP options. Not all options
are passed to the callback function, the ones not exposed are
pad, end, message type and overload. If indicated by the overload
option, file and sname fields will be examined for more options.

The option functions are internal to DHCP, add a new header files
for interal function prototypes.
2013-12-12 11:43:33 -05:00
Patrik Flykt
b5d01d174c build: Add initial build support
The client test program is the only one to be built so far.
2013-12-12 11:43:33 -05:00
Patrik Flykt
be391925d5 dhcp: Add test for DHCP client initialization and parameter setting 2013-12-12 11:43:33 -05:00
Patrik Flykt
011feef852 dhcp: Add DHCP client initialization
Provide functionality for initializing a DHCP client struct, setting
interface index, last used address and additional options to request.
On initialization the most useful options are added by default.
2013-12-12 11:43:33 -05:00
Patrik Flykt
5f404b1e68 dhcp: Add DHCP protocol structures and initial defines
Create a new directory to host DHCP components.
2013-12-12 11:43:33 -05:00
Lennart Poettering
e5ca092c27 log: protect errno when we use assert_return() 2013-12-12 15:59:13 +01:00
Lennart Poettering
ad5b215d1b core: suppress gcc warnings on selinux-less systems 2013-12-12 15:59:13 +01:00
Lennart Poettering
01390ca8a2 update TODO 2013-12-12 15:59:13 +01:00
Marc-Antoine Perennou
2a410422ec shared: add missing include
Needed for socketpair, recv
2013-12-12 08:49:25 -05:00
Kay Sievers
d90bb66996 bus: add SD_BUS_NAME_REPLACE_EXISTING to all activatable services, fix one flags conversion 2013-12-12 06:41:23 +01:00
Lennart Poettering
29a07cdb4a bus: instead of exposing the dbus1 flags when acquiring a name use our own that are closer to kdbus
This turns around DO_NOT_QUEUE into QUEUE which implies a more useful
default. (And negative options are awful anyway.)
2013-12-12 05:55:58 +01:00
Lennart Poettering
f8e11cda53 bus: properly return an error when we detect a method call timeout 2013-12-12 05:40:05 +01:00
Lennart Poettering
6d99330e26 core: fix bus registration on daemon reexec 2013-12-12 05:40:04 +01:00
Zbigniew Jędrzejewski-Szmek
4d680aeea1 nspawn: complain and continue if machine has same id
If --link-journal=host or --link-journal=guest is used, this totally
cannot work and we exit with an error. If however --link-journal=auto
or --link-journal=no is used, just display a warning.

Having the same machine id can happen if booting from the same
filesystem as the host. Since other things mostly function correctly,
let's allow that.

https://bugs.freedesktop.org/show_bug.cgi?id=68369
2013-12-11 22:39:41 -05:00
Zbigniew Jędrzejewski-Szmek
50f72bca65 Do not log all assert_return failures
% build/journalctl help
Assertion 'match_is_valid(data, size)' failed at ../src/journal/sd-journal.c:227, function sd_journal_add_match(). Ignoring.

Callers cannot be expect to check all arguments always.
2013-12-11 22:26:55 -05:00
Djalal Harouni
faf5077f89 journal: pipe journalctl help output into a pager
journalctl help output might run off the screen, so be consistent
as other systemd tools do and pipe it into a pager.
2013-12-11 22:26:55 -05:00
Zbigniew Jędrzejewski-Szmek
05b92756f7 man: mention SYSTEMD_USER_WANTS
Also split into paragraphs for easier reading and make a few minor
corrections.
2013-12-11 22:26:18 -05:00
Lennart Poettering
7596e9e10a service: actually leave watchdog enabled in the states where it matters 2013-12-12 03:06:21 +01:00
Lennart Poettering
fe2b58a4ff timedated: make sure GetAll() succeeds in systems lacking /dev/rtc (such as containers) 2013-12-12 03:06:21 +01:00
Thomas Hindoe Paaboel Andersen
d514feaa87 test-fileio: replace mktemp with mkstemp to avoid warnings
This is a fairly useless thing to do but it makes the compilers
and analyzers shut up about the use of mktemp.
2013-12-12 02:46:09 +01:00
Lennart Poettering
d78bf250b0 bus: properly generate NameOwnerChanged messages when we take from/give back to queue/starter 2013-12-12 01:51:51 +01:00
Lennart Poettering
689bd78d10 bus: fix order in which we check creds 2013-12-12 01:39:32 +01:00
Lennart Poettering
0a825b5cd4 update TODO 2013-12-12 01:39:21 +01:00
Lennart Poettering
7f7030e23e bus: update name listing logic to current kernel interface 2013-12-12 00:35:23 +01:00
Lennart Poettering
6a4abbc877 bus: when checking whether a creds object contains some field, don't use assert_return()
These are not programming errors, so they shouldn't use assert_return()
2013-12-12 00:20:11 +01:00
Lennart Poettering
9e5548644f bus: connect directly via kdbus in sd_bus_open_system_container()
kdbus fortunately exposes the container's busses in the host fs, hence
we can access it directly instead of doing the namespacing dance.
2013-12-12 00:07:49 +01:00
Lennart Poettering
ba276c8153 sd-event: try to move each wakeup to the same spot within every 10s
In addition to the same spot within every 1min, every 1s, every 250s
2013-12-11 23:41:21 +01:00
Lennart Poettering
21c6dc33a6 journald: make sure the stdout/stderr stream fd is removed from epoll before we close it 2013-12-11 23:36:59 +01:00
Lennart Poettering
b3de50cb07 units: don't run readahead done timers in containers
We don't run the collector in the container either, hence we don't need
to stop it either.
2013-12-11 23:31:34 +01:00
Lennart Poettering
e9174f29c7 journald: cache cgroup root path, instead of querying it on every incoming log message 2013-12-11 23:31:07 +01:00
Lennart Poettering
897395791f journal: when listing logs of a container make sure we don't accidentally show messages from host too 2013-12-11 23:10:36 +01:00
Lennart Poettering
0c24bb2346 journald: cache hostname, boot_id and machine_id fields instead of generating them fresh for each log entry 2013-12-11 22:55:57 +01:00
Lennart Poettering
91bf3b3e12 journal: don't go belly up when an stdout/stderr client terminates the connection 2013-12-11 22:17:15 +01:00
Lennart Poettering
b6741478e7 journal: add ability to browse journals of running OS containers
This adds the new library call sd_journal_open_container() and a new
"-M" switch to journalctl. Particular care is taken that journalctl's
"-b" switch resolves to the current boot ID of the container, not the
host.
2013-12-11 22:04:03 +01:00
Lennart Poettering
842129f587 service: clean up watchdog logic a bit 2013-12-11 20:55:09 +01:00