Commit Graph
13179 Commits
Author SHA1 Message Date
Michal Schmidt b81bbe5355 core: small refactor of job completion logging
Joins three log_struct() calls into one.
2015-07-21 19:24:20 +02:00
Michal Schmidt 4f29c6fea6 core: log completion of remaining job types
JOB_RESTART and failed JOB_VERIFY_ACTIVE completions were printed to
console but not to the log.
2015-07-21 19:24:20 +02:00
Michal Schmidt 30961fa300 core: do not log done failed-condition jobs as if unit started
It is misleading to see "Started foo." in the log when the unit's
condition was false.
2015-07-21 19:24:20 +02:00
Michal Schmidt c382d69e3d core: remove generic job completion messages from unit vtables
These units' message format strings are identical to the generic
strings. Since we can always rely on the fallback, these are now
redundant.
2015-07-21 19:24:20 +02:00
Michal Schmidt aa49ab5f22 core: try harder to get job completion messages too
This is similar to "core: always try harder to get unit status
message format string", but for job completion status messages.
It makes generic status messages applicable for printing to the console.
And it rewrites the functions in a more table-based style.
2015-07-21 19:24:04 +02:00
Michal Schmidt b5bf308ba5 core: unit_get_status_message_format() never returns NULL
unit_get_status_message_format() is used only with one of JOB_START,
JOB_STOP, JOB_RELOAD, all of which have fallback message strings
defined, so the function may never return NULL.
2015-07-21 18:48:45 +02:00
Daniel Mack 0a327854f8 bootchart: fix negative 'timeleft' condition
Fix the overrun case in sample acquistion and negative number calculations.

Reported by Stefan Sauer.

Fixes #642
2015-07-21 18:37:06 +02:00
Daniel Mack 81b72a962f user-sessions: fix write_string_file() fallout
WRITE_STRING_FILE_ATOMIC is only valid if WRITE_STRING_FILE_CREATE is also
given. IOW, an atomic file write operation is only possible when creating a
file is also being asked for.

This is a regression from the recent write_string_file() rework.
2015-07-21 15:59:02 +02:00
Daniel Mack 6f566391a4 logind: fix write_string_file() fallout
WRITE_STRING_FILE_ATOMIC is only valid if WRITE_STRING_FILE_CREATE is also
given. IOW, an atomic file write operation is only possible when creating a
file is also being asked for.

This is a regression from the recent write_string_file() rework.
2015-07-21 15:58:59 +02:00
Michal Schmidt a85ca902c9 core: always try harder to get unit status message format string
The starting/stopping messages are printed to the console only if the
corresponding format string is defined in the unit's vtable. To avoid
excessive messages on the console, the unit types whose start/stop
jobs are instantaneous had the format strings intentionally undefined.
When logging the same event to the journal, a fallback to generic
Starting/Stopping/Reloading messages is used.

The problem of excessive console messages with instantaneous jobs
is already resolved in a nicer way ("core: fix confusing logging of
instantaneous jobs"), so there's no longer a need to have two ways of
getting the format strings. Let's fold them into one function with
the fallback to generic message strings.
2015-07-21 15:09:12 +02:00
Michal Schmidt 2d018ae23b core: correct return value from reload methods
Return 1 from *_reload() methods to signify "we did something", just
like in *_start(). This causes "Reloading foo..." messages to be logged.
"Reloaded foo." messages are already logged.
2015-07-21 15:09:12 +02:00
Michal Schmidt d1a34ae9c2 core: fix confusing logging of instantaneous jobs
For instantaneous jobs (e.g. starting of targets, sockets, slices, or
Type=simple services) the log shows the job completion
before starting:

        systemd[1]: Created slice -.slice.
        systemd[1]: Starting -.slice.
        systemd[1]: Created slice System Slice.
        systemd[1]: Starting System Slice.
        systemd[1]: Listening on Journal Audit Socket.
        systemd[1]: Starting Journal Audit Socket.
        systemd[1]: Reached target Timers.
        systemd[1]: Starting Timers.
        ...

The reason is that the job completes before the ->start() method returns
and only then does unit_start() print the "Starting ..." message.
The same thing happens when stopping units.

Rather than fixing the order of the messages, let's just not emit the
Starting/Stopping message at all when the job completes instantaneously.
The job completion message is sufficient in this case.
2015-07-21 15:09:12 +02:00
Susant Sahani 407af9dd89 networkd: ip6 tunnel add support for flowlabel
Add Pv6 Flow Label support. The 20-bit Flow Label field in the IPv6
header[RFC2460] is used by a  node to label packets of a flow.
2015-07-21 10:06:44 +05:30
Tom Gundersen e89f2a98e6 Merge pull request #625 from ssahani/tun2
sd-netlink: add tunnel parameters
2015-07-20 22:30:18 +02:00
Jose Carlos Venegas Munoz b1da143f2a sd-boot:Show stub cmdline when edit
If Linux efi stub is used, embedded cmdline in efi stub is
not shown. As a result, it is required to rewrite all the
line, if is only required to modify it. This behavior only
happen using Linux efi stub.

This patch allows boot loader to show embedded cmdline when
'e' key is pressed to edit boot loader options.
2015-07-20 14:56:02 -05:00
Tom Gundersen 3083663e5d Merge pull request #630 from namhyung/use-isempty
sd-bus: use isempty() consistently
2015-07-20 18:08:13 +02:00
Tom Gundersen 31053e929e Merge pull request #549 from ssahani/dhcp
networkd: allow hostname override
2015-07-20 17:58:45 +02:00
Namhyung Kim d41eee127a sd-bus: use isempty() consistently
Instead of open-coding, use isempty() to check NULL or empty string
for consistency.
2015-07-20 23:41:18 +09:00
Susant Sahani 56bf3853b4 add NL parameters to missing.h 2015-07-20 10:17:50 +05:30
Susant Sahani 79e27dbcb1 sd-netlink: add tunnel NL parameters 2015-07-20 10:17:14 +05:30
Tom Gundersen cdf6f5ae04 basic: bitmap - complete fix for bitshift overflow
The bug found by David existed in several places, fix them all. Also
extend the tests to cover these cases.
2015-07-17 18:59:16 +02:00
Tom Gundersen 511ed79917 Merge pull request #611 from dvdhrm/bitmap-fixes
Bitmap fixes
2015-07-17 12:33:49 +02:00
David Herrmann 724dd73d1b Merge pull request #607 from ssahani/vxlan1
networkd: move config parsers to specific header files
2015-07-17 12:26:32 +02:00
David Herrmann a933570dea bitmap: avoid 32bit integer overflow in shift
We really must use 64bit integers to calculate long-long shifts.
Otherwise, we will never get higher masks than 2^31.
2015-07-17 12:19:06 +02:00
David Herrmann 22cedfe15f bitmap: allow bitmap_iterate() on NULL bitmap
Make sure we properly treat NULL bitmaps as empty. Right now, we don't
(which really looks like a typo).
2015-07-17 12:18:13 +02:00
Umut Tezduyar Lindskog 97b845b0fc cgtop: include missing signal.h for sigwinch 2015-07-17 10:39:06 +02:00
David Herrmann 2810332843 logind: never select closing sessions for a VT
If a session is in closing state (and already got rid of its VT), then
never re-select it for that VT. There is no reason why we should grant
something to a session that is already going away *AND* already got rid
of exactly that.
2015-07-16 18:46:12 +02:00
David Herrmann da770c386f logind: prefer new sessions over older ones on VT switches
Our seat->positions[] array keeps track of the 'preferred' session on a
VT. The only situation this is used, is to select the session to activate
when a VT is activated. In the normal case, there's only one session per
VT so the selection is trivial.

Older greeters, however, implement take-overs when they start sessions on
the same VT that the greeter ran on. We recently limited such take-overs
to VTs where a greeter is running on, to force people to never share VTs
in new code that is written.

For legacy reasons, we need to be compatible to old greeters, though.
Hence, we allow those greeters to implement take-over. In such take-overs,
however, we should really make sure that the new sessions gets preferred
over the old one under all circumstances. Hence, make sure we override
the previous preferred session with a new session.
2015-07-16 18:23:55 +02:00
Susant Sahani 3b50bf800e networkd: move config_parse_tunnel_address
move config_parse_tunnel_address from networkd.h to

tunnel specific file networkd-netdev-tunnel.h
2015-07-16 20:16:53 +05:30
Susant Sahani a94d64d256 networkd: move config_parse_vxlan_group_address
move config_parse_vxlan_group_address from
networkd.h to networkd-netdev-vxlan.h
2015-07-16 20:14:05 +05:30
David Herrmann e23bc0e7ca bus-proxy: never pass on unmatched broadcasts
The lovely libvirtd goes into crazy mode if it receives broadcasts that
it didn't subscribe to. With bus-proxyd, this might happen in 2 cases:

    1) The kernel passes us an unmatched signal due to a false-positive
       bloom-match.

    2) We generate NameOwnerChanged/NameAcquired/NameLost locally even
       though the peer didn't subscribe to it.

dbus-daemon is reliable in what signals it passes on. So make sure we
follow that style. Never ever send a signal to a local peer if it doesn't
match an installed filter of that peer.
2015-07-16 16:36:35 +02:00
David Herrmann 9afd2b46f2 sd-bus: add new test for NameAcquired via proxy/dbus-daemon
This adds test-bus-proxy which should be used to test correct behavior of
systemd-bus-proxyd. The first test that was added is to verify we actually
receive NameAcquired signals for ourselves on bus-connect.
2015-07-16 16:35:09 +02:00
David Herrmann 2ec7c4279e Merge pull request #602 from teg/bitmap-iterator
bitmap: use external iterator
2015-07-16 15:12:26 +02:00
David Herrmann 1845880757 sd-bus: properly match ID changes
If the caller does not specify arg1 for NameOwnerChanged matches, we
really must take the ID from arg2 or arg3, if provided. They are
guaranteed to be identical to arg1 if either is supplied, but there is no
strict requiredment that arg1 is supplied. Hence, make sure to always
take the more restrictive match. Otherwise, we install rather wide
matches without anyone requiring them.
2015-07-16 15:01:52 +02:00
David Herrmann 1af5f746d5 sd-bus: destination-matches cannot match NameOwnerChanged
Make sure we don't install NameOwnerChanged matches if the caller passed
a destination='' match (except if it is the broadcast address). Per spec,
all NameOwnerChanged signals are broadcasts.

Only the NameLost/NameAcquired signals are unicasts, but those are never
received through sd-bus. Instead, the bus-proxy synthesizes them and it
already installs proper matches for them.
2015-07-16 15:01:52 +02:00
David Herrmann 4f1d774135 sd-bus: fix invalid stack access on test-bus-marshal
Make sure we actually parse "unsigned long long" if we encode a uint64_t.
Otherwise, we will get random data from the stack.
2015-07-16 15:01:52 +02:00
Tom Gundersen cb57dd4159 bitmap: use external iterator
Reuse the Iterator object from hashmap.h and expose a similar API.

This allows us to do

{
    Iterator i;
    unsigned n;

    BITMAP_FOREACH(n, b, i) {
        Iterator j;
        unsigned m;

        BITMAP_FOREACH(m, b, j) {
            ...
        }
    }
}

without getting confused. Requested by David.
2015-07-16 14:11:12 +02:00
David Herrmann 443a559813 sd-bus: fix gvariant structure encoding
In gvariant, all fixed-size objects need to be sized a multiple of their
alignment. If a structure has only fixed-size members, it is required to
be fixed size itself. If you imagine a structure like (ty), you have an
8-byte member followed by an 1-byte member. Hence, the overall inner-size
is 9. The alignment of the object is 8, though. Therefore, the specs
mandates final padding after fixed-size structures, to make sure it's
sized a multiple of its alignment (=> 16).

On the gvariant decoder side, we already account for this in
bus_gvariant_get_size(), as we apply overall padding to the size of the
structure. Therefore, our decoder correctly skips such final padding when
parsing fixed-size structure.

On the gvariant encoder side, however, we don't account for this final
padding. This patch fixes the structure and dict-entry encoders to
properly place such padding at the end of non-uniform fixed-size
structures.

The problem can be easily seen by running:
    $ busctl --user monitor
and
    $ busctl call --user org.freedesktop.systemd1 / org.foobar foobar "(ty)" 777 8

The monitor will fail to parse the message and print an error. With this
patch applied, everything works fine again.

This patch also adds a bunch of test-cases to force non-uniform
structures with non-pre-aligned positions.

Thanks to Jan Alexander Steffens <jan.steffens@gmail.com> for spotting
this and narrowing it down to non-uniform gvariant structures. Fixes #597.
2015-07-16 11:23:34 +02:00
Daniel Mack 42921716a4 Merge pull request #588 from teg/resolved-nsec
resolved: add basic NSEC and NSEC3 support
2015-07-15 17:27:35 -04:00
David Herrmann 7d67077f78 sd-bus: fix object tree to be deeper than 2 levels
So right now our object-tree is limited to 2 levels at most
('/' and '/foo/...../bar'). We never link any intermediate levels, even
though that was clearly the plan. Fix the bus_node_allocate() helper to
actually link all intermediate nodes, too, not just the root node.

This fixes a simple inverse ptr-diff bug.

The downside of this fix is that we clearly never tested (nor used) the
object tree in any way. The only reason that the introspection works is
that our enumerators shortcut the object tree.

Lets see whether that code actually works..

Thanks to: Nathaniel McCallum <nathaniel@themccallums.org>
..for reporting this. See #524 for an actual example code.
2015-07-15 14:39:12 +02:00
David Herrmann bf4c113e17 sd-device: never return NULL+0
It is highly confusing if a getter function returns 0, but the value is
set to NULL. This, right now, triggers assertions as code relies on the
returned values to be non-NULL.

Like with sd-bus-creds and friends, return 0 only if a value is actually
available.

Discussed with Tom, and actually fixes real bugs as in #512.
2015-07-15 12:31:21 +02:00
David Herrmann ab822b624b sd-boot: ignore missing /etc/machine-id
If /etc/machine-id is missing (eg., gold images), we should not fail
installing sd-boot. This is a perfectly fine use-case and we should simply
skip installing the default loader config in that case.
2015-07-15 12:04:31 +02:00
Tom Gundersen 5d45a88084 resolved: rr - add NSEC3 support
Needed for DNSSEC.
2015-07-14 22:17:24 +02:00
Tom Gundersen 919a7f5f1c basic: util - add base32hexmem() function similar to hexmem()
This implements more of RFC4648.
2015-07-14 22:14:08 +02:00
Tom Gundersen 50f1e641a9 resolved: rr - add NSEC support
Needed for DNSSEC.
2015-07-14 21:53:10 +02:00
Tom Gundersen 5ffa42cb80 basic: add a Bitmap implementation
For when a Hashmap is overkill.
2015-07-14 21:53:10 +02:00
Tom Gundersen 2a2953b355 basic: util - fix memleak on error in unbase64mem() 2015-07-14 21:14:45 +02:00
Tom Gundersen dad8f7f2b6 Merge pull request #538 from mischief/multiple-routers
sd-dhcp-lease: fix handling of multiple routers

We only support one router, but in case more than one is given, we now ignore subsequent ones, rather than fall over.
2015-07-14 20:17:11 +02:00
Daniel Mack 9ecec7d766 Merge pull request #586 from teg/resolved-rrs-3
resolved: minor improvements to RR handling
2015-07-14 13:43:18 -04:00
Tom Gundersen d23a27a964 resolved: improve printing of unknown RRs
This implements the recommendations from RFC3597.
2015-07-14 19:36:35 +02:00