chiark / gitweb /
7 years agoman: fix path for system-sleep hook directory
Michael Biebl [Wed, 23 Jul 2014 21:35:22 +0000 (23:35 +0200)]
man: fix path for system-sleep hook directory

7 years agodocs: remove repeating words from man/*xml
Karel Zak [Wed, 23 Jul 2014 10:40:07 +0000 (12:40 +0200)]
docs: remove repeating words from man/*xml

7 years agodhcp-network: remove unused DHCP6_STATE_RS
Dan Williams [Tue, 22 Jul 2014 22:18:14 +0000 (17:18 -0500)]
dhcp-network: remove unused DHCP6_STATE_RS

Probably a left-over from when router solicitations were
requested in the DHCP6 code.  But since they are now separate,
this state is no longer needed.

7 years agonetworkd: set route protocol
Dan Williams [Tue, 22 Jul 2014 21:54:47 +0000 (16:54 -0500)]
networkd: set route protocol

All routes added by networkd are currently set RTPROT_BOOT, which according
to the kernel means "Route installed during boot" (rtnetlink.h).  But this
is not always the case as networkd changes routing after boot too.  Since
the kernel gives more detailed protocols, use them.

With this patch, user-configured static routes now use RTPROT_STATIC (which
they are) and DHCP routes use RTPROT_DHCP.  There is no define for IPv4LL
yet, so those are installed as RTPROT_STATIC (though perhaps RTPROT_RA is

[tomegun: fixup
src/network/networkd-link.c:972:33: error: too few arguments to function 'route_new_dynamic']

7 years agoupdate TODO
Lennart Poettering [Wed, 23 Jul 2014 00:00:32 +0000 (02:00 +0200)]
update TODO

7 years agoresolved: most DNS servers can't handle more than one question per packet, hence...
Lennart Poettering [Tue, 22 Jul 2014 23:59:36 +0000 (01:59 +0200)]
resolved: most DNS servers can't handle more than one question per packet, hence let's not generate that

7 years agoresolved: implement negative caching
Lennart Poettering [Tue, 22 Jul 2014 22:57:25 +0000 (00:57 +0200)]
resolved: implement negative caching

7 years agoresolved: rework logic so that we can share transactions between queries of different...
Lennart Poettering [Tue, 22 Jul 2014 19:48:41 +0000 (21:48 +0200)]
resolved: rework logic so that we can share transactions between queries of different clients

7 years agonss-myhostname: don't include assert.h twice
Lennart Poettering [Mon, 21 Jul 2014 22:36:01 +0000 (00:36 +0200)]
nss-myhostname: don't include assert.h twice

7 years agoman: merge systemd-verify with systemd-analyze
Zbigniew Jędrzejewski-Szmek [Tue, 22 Jul 2014 01:14:08 +0000 (21:14 -0400)]
man: merge systemd-verify with systemd-analyze

7 years agoshell-completion: systemd-analyze verify, systemctl link
Zbigniew Jędrzejewski-Szmek [Tue, 22 Jul 2014 01:11:56 +0000 (21:11 -0400)]
shell-completion: systemd-analyze verify, systemctl link

Some zsh completion helpers were not installed, so completion
was broken.

Add systemd-analyze verify. Make systemctl link complete only
unit names.

7 years agoMerge systemd-verify with systemd-analyze
Zbigniew Jędrzejewski-Szmek [Tue, 22 Jul 2014 01:11:54 +0000 (21:11 -0400)]
Merge systemd-verify with systemd-analyze

7 years agoconfigure: add -Wno-typedef-redefinition
Zbigniew Jędrzejewski-Szmek [Tue, 22 Jul 2014 01:07:19 +0000 (21:07 -0400)]
configure: add -Wno-typedef-redefinition

Message-ID: <>

7 years agoAdd IFLA_VTI defines to missing.h
Jean-André Santoni [Tue, 22 Jul 2014 01:04:44 +0000 (21:04 -0400)]
Add IFLA_VTI defines to missing.h

7 years agoupdate-done: set proper selinux context for .updated
Zbigniew Jędrzejewski-Szmek [Tue, 22 Jul 2014 00:56:29 +0000 (20:56 -0400)]
update-done: set proper selinux context for .updated

7 years agosysusers: fix selinux context of backup files
Zbigniew Jędrzejewski-Szmek [Tue, 22 Jul 2014 00:41:19 +0000 (20:41 -0400)]
sysusers: fix selinux context of backup files

Also, fix fopen_temporary_label to set proper context. By chance,
all users so far used the same context, so the error didn't matter.

Also, check return value from label_init().

7 years agonetworkd: bridge - use USEC_PER_MSEC macros
Tom Gundersen [Mon, 21 Jul 2014 18:54:09 +0000 (20:54 +0200)]
networkd: bridge - use USEC_PER_MSEC macros

Lennart said:
> We have these nice USEC_PER_MSEC-style macro definitions which make it a
> little bit clearer what we are converting here from what into
> what... please use that instead of writing "1000"...
> (we stole those from gstreamer btw)

7 years agonetworkd: add support for bond options
Susant Sahani [Mon, 21 Jul 2014 13:44:48 +0000 (19:14 +0530)]
networkd: add support for bond options

The following bond options are supported by this patch.

Specifies the frequency in milli-seconds that MII link
monitoring will occur.

Specifies the delay time in milli-seconds to enable a link
after a link up status has been detected.

Specifies the delay time in milli-seconds to disable a link
after a link failure has been detected.

1. Added gconf variables.
2. man page




cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 2000
Down Delay (ms): 8000

802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
bond bond1 has no active aggregator

[tomegun: rephrased manpage, dropped bond_ prefix from variables]

7 years agonetworkd: bond add support for lacp rate
Susant Sahani [Mon, 21 Jul 2014 13:22:14 +0000 (18:52 +0530)]
networkd: bond add support for lacp rate

option specifies the rate in which link partner to transmit
LACPDU packets in 802.3ad mode.  Possible values
slow : Request partner to transmit LACPDUs every 30 seconds
fast : Request partner to transmit LACPDUs every 1 second
The default is slow.

1. Added enum bond_lacp_rate_table
2. gperf LacpduTransmitRate

conf file:


cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
bond bond1 has no active aggregator

[tomegun: renamed from LacpduTransmitRate to LACPTransmitRate, manpage fixes and
dropped bond_ prefix from variables]

7 years agonetworkd: add support for bond transmit hash policy
Susant Sahani [Mon, 21 Jul 2014 13:07:05 +0000 (18:37 +0530)]
networkd: add support for bond transmit hash policy

This patch adds support  the transmit hash policy to use
for slave selection in balance-xor, 802.3ad, and tlb modes

layer2, layer3+4, layer2+3, encap3+4, encap3+4

1. BondXmitHashPolicy
2. conf param TransmitHashPolicy

Test conf:


test output:
cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
bond bond1 has no active aggregator

[tomegun: dropped bond_ prefix from new Bond variable, drop repeated man-page section]

7 years agosd-rtnl: uncomment bond rtnl constants
Susant Sahani [Wed, 16 Jul 2014 08:26:24 +0000 (13:56 +0530)]
sd-rtnl: uncomment bond rtnl constants

7 years agonetworkd: netdev - split NetDev struct into per-kind structs
Tom Gundersen [Wed, 16 Jul 2014 11:17:10 +0000 (13:17 +0200)]
networkd: netdev - split NetDev struct into per-kind structs

Similarly to how unit types work.

7 years agosd-network: drop get_ifindices
Tom Gundersen [Fri, 18 Jul 2014 23:37:22 +0000 (01:37 +0200)]
sd-network: drop get_ifindices

People should use rtnl for this, and then only query sd-network by the ifindices it finds.

7 years agoman: add systemd-verify(1)
Zbigniew Jędrzejewski-Szmek [Sun, 20 Jul 2014 23:28:58 +0000 (19:28 -0400)]
man: add systemd-verify(1)

7 years agosystemd-verify: check man pages
Zbigniew Jędrzejewski-Szmek [Sun, 20 Jul 2014 22:23:53 +0000 (18:23 -0400)]
systemd-verify: check man pages

7 years agosystemd-verify: a simple tool for offline unit verification
Zbigniew Jędrzejewski-Szmek [Sun, 20 Jul 2014 21:58:35 +0000 (17:58 -0400)]
systemd-verify: a simple tool for offline unit verification

This tool will warn about misspelt directives, unknown sections, and
non-executable commands. It will also catch the common mistake of
using Accept=yes with a non-template unit and vice versa.

7 years agopath-lookup: make SYSTEMD_UNIT_PATH more flexible
Zbigniew Jędrzejewski-Szmek [Sun, 20 Jul 2014 21:56:57 +0000 (17:56 -0400)]
path-lookup: make SYSTEMD_UNIT_PATH more flexible

It can now contain more than one directory, and can be used
to only prepend, not totally override, the normal load path.

7 years agotest-cgroup-mask: fix masks in test and enable by default
Zbigniew Jędrzejewski-Szmek [Fri, 18 Jul 2014 21:50:04 +0000 (17:50 -0400)]
test-cgroup-mask: fix masks in test and enable by default

Commit 637f421e5c6a ("cgroups: always propagate controller membership
to siblings") changed the mask propagation logic, but the test wasn't

Move to normal tests from manual tests, it should not touch the system

7 years agotest-cgroup-mask: pass on kernels without memory controller
Zbigniew Jędrzejewski-Szmek [Wed, 19 Feb 2014 04:28:15 +0000 (23:28 -0500)]
test-cgroup-mask: pass on kernels without memory controller

It seems that unit_get_siblings_mask returns the controllers
filtered by what is available, but get_members_mask and
get_cgroup_mask do not. This just fixes the test following the

7 years agosystemd: return the first error from manager_startup()
Zbigniew Jędrzejewski-Szmek [Fri, 18 Jul 2014 21:05:18 +0000 (17:05 -0400)]
systemd: return the first error from manager_startup()

7 years agotest-engine: fix access to unit load path
Zbigniew Jędrzejewski-Szmek [Tue, 7 Jan 2014 13:41:24 +0000 (08:41 -0500)]
test-engine: fix access to unit load path

Also add a bit of debugging output to help diagnose problems,
add missing units, and simplify cppflags.

Move test-engine to normal tests from manual tests, it should now
work without destroying the system.

7 years agoAdd quotes to warning message
Zbigniew Jędrzejewski-Szmek [Sun, 20 Jul 2014 23:47:42 +0000 (19:47 -0400)]
Add quotes to warning message

The message for SYSTEMD_LOG_LEVEL= looked a bit strange.

7 years agosystemd: use pager for --test and --help
Zbigniew Jędrzejewski-Szmek [Tue, 7 Jan 2014 05:00:05 +0000 (00:00 -0500)]
systemd: use pager for --test and --help

7 years agojournalctl,man: allow + only between terms
Zbigniew Jędrzejewski-Szmek [Sun, 20 Jul 2014 01:05:07 +0000 (21:05 -0400)]
journalctl,man: allow + only between terms

7 years agobash-completion: -p option for journalctl
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 23:46:04 +0000 (19:46 -0400)]
bash-completion: -p option for journalctl

7 years agoinstall: systemd-timesyncd.service is enabled by
Michael Olbrich [Fri, 18 Jul 2014 04:33:52 +0000 (06:33 +0200)]
install: systemd-timesyncd.service is enabled by

systemd-timesyncd.service has a "" so the
initially generated link should match that.

7 years agocore: remove systemd_running_as lookup functions
Zbigniew Jędrzejewski-Szmek [Tue, 7 Jan 2014 02:26:20 +0000 (21:26 -0500)]
core: remove systemd_running_as lookup functions

They are unused and unlikely to ever be.

7 years agoescape: fix return code
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 19:35:48 +0000 (15:35 -0400)]
escape: fix return code

7 years agobarrier: suppress false-positive warning
David Herrmann [Sat, 19 Jul 2014 09:32:25 +0000 (11:32 +0200)]
barrier: suppress false-positive warning

If poll() returns, one of both revents must be set, thus "buf" is set by
either clause. This is non-obvious for code-checkers so add an "else
continue;" clause to suppress "uninitialized variable" warnings.

7 years agocore: show timeouts when watchdog howls
Zbigniew Jędrzejewski-Szmek [Fri, 27 Dec 2013 22:14:24 +0000 (17:14 -0500)]
core: show timeouts when watchdog howls

7 years agoSmall modernizations
Zbigniew Jędrzejewski-Szmek [Fri, 18 Jul 2014 18:01:13 +0000 (14:01 -0400)]
Small modernizations

7 years agoBe more verbose when bind or listen fails
Zbigniew Jędrzejewski-Szmek [Tue, 4 Mar 2014 00:49:40 +0000 (19:49 -0500)]
Be more verbose when bind or listen fails

Also be more verbose in devnode_acl_all().

7 years agoNuke update-kbd-map
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 01:44:59 +0000 (21:44 -0400)]
Nuke update-kbd-map

Our version has evolved independently of the original table
in systemd-config-keyboard, so it cannot be ever regenerated from
original upstream. Remove script to avoid confusion.

7 years tweaks to python commands
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 01:44:58 +0000 (21:44 -0400)] tweaks to python commands

7 years agomachinectl: make sure we are not reading an unitialized variable
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 01:44:58 +0000 (21:44 -0400)]
machinectl: make sure we are not reading an unitialized variable

7 years agoman,journal: add note about sd_journal_get_cutoff_monotonic_usec return value
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 01:44:36 +0000 (21:44 -0400)]
man,journal: add note about sd_journal_get_cutoff_monotonic_usec return value

Also modify the function itself to be a bit simpler to read.

7 years agocompress: fix return value
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 01:44:36 +0000 (21:44 -0400)]
compress: fix return value

7 years agoresolved: do not use unitialized variable
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 01:44:34 +0000 (21:44 -0400)]
resolved: do not use unitialized variable

7 years agobarrier: initalize file descriptors with -1
Zbigniew Jędrzejewski-Szmek [Sat, 19 Jul 2014 00:12:13 +0000 (20:12 -0400)]
barrier: initalize file descriptors with -1

Explicitly initalize descriptors using explicit assignment like
bus_error. This makes barriers follow the same conventions as
everything else and makes things a bit simpler too.

Rename barier_init to barier_create so it is obvious that it is
not about initialization.

Remove some parens, etc.

7 years agoresolved: various bad memory access fixes to the cache
Lennart Poettering [Fri, 18 Jul 2014 19:01:22 +0000 (21:01 +0200)]
resolved: various bad memory access fixes to the cache

7 years agoresolved: fix bus signatures to follow family as int change
Lennart Poettering [Fri, 18 Jul 2014 19:01:07 +0000 (21:01 +0200)]
resolved: fix bus signatures to follow family as int change

7 years agoterminal: suppress warning in subterm
David Herrmann [Fri, 18 Jul 2014 15:46:14 +0000 (17:46 +0200)]
terminal: suppress warning in subterm

Empty format-strings are just fine if format-functions do more than
printing. This is the case here, so suppress the "empty format-string"
warning by using "%s" with an empty argument.

7 years agoterminal: add unifont font-handling
David Herrmann [Fri, 18 Jul 2014 15:34:03 +0000 (17:34 +0200)]
terminal: add unifont font-handling

The unifont layer of libsystemd-terminal provides a fallback font for
situations where no system-fonts are available, or if you don't want to
deal with traditional font-formats for some reasons.

The unifont API mmaps a pre-compiled bitmap font that was generated out of
GNU-Unifont font-data. This guarantees, that all users of the font will
share the pages in memory. Furthermore, the layout of the binary file
allows accessing glyph data in O(1) without pre-rendering glyphs etc. That
is, the OS can skip loading pages for glyphs that we never access.

Note that this is currently a test-run and we want to include the binary
file in the GNU-Unifont package. However, until it was considered stable
and accepted by the maintainers, we will ship it as part of systemd. So
far it's only enabled with the experimental --enable-terminal, anyway.

7 years agoterminal: only build if --enable-terminal was specified
David Herrmann [Fri, 18 Jul 2014 15:26:23 +0000 (17:26 +0200)]
terminal: only build if --enable-terminal was specified

Whoopsy, I totally forgot adding the "if ENABLE_TERMINAL" markers. Do that
now that we know it builds fine everywhere.

7 years agoin-addr-util: remove family_to_string() API
Lennart Poettering [Fri, 18 Jul 2014 14:15:12 +0000 (16:15 +0200)]
in-addr-util: remove family_to_string() API

we already have a more complete one with af_to_name(), that is generated
from the header files, no need to duplicate this.

7 years agochange type for address family to "int"
Lennart Poettering [Fri, 18 Jul 2014 14:09:30 +0000 (16:09 +0200)]
change type for address family to "int"

Let's settle on a single type for all address family values, even if
UNIX is very inconsitent on the precise type otherwise. Given that
socket() is the primary entrypoint for the sockets API, and that uses
"int", and "int" is relatively simple and generic, we settle on "int"
for this.

7 years agosystemd-detect-virt: detect s390 virtualization
Thomas Blume [Fri, 18 Jul 2014 13:13:36 +0000 (09:13 -0400)]
systemd-detect-virt: detect s390 virtualization

A system that is running on a logical partition (LPAR) provided by
PR/SM has access to physical hardware (except CPU). It is true that
PR/SM abstracts the hardware, but only for sharing purposes.

Details are statet at:

In other words, PR/SM transforms physical resources into virtual resources so
that many logical partitions can share the same physical resources.

Still, from the OS point of view, the shared virtual resource is real
hardware. ConditionVirtualization must be set to false if the OS runs
directly on PR/SM (e.g. in an LPAR).

[zj: reorder code so that variables are not allocated when #if-def is
false. Add commit message.]

7 years agoupdate TODO
Lennart Poettering [Fri, 18 Jul 2014 11:59:55 +0000 (13:59 +0200)]
update TODO

7 years agoresolved: add more const
Lennart Poettering [Fri, 18 Jul 2014 11:59:49 +0000 (13:59 +0200)]
resolved: add more const

7 years agoterminal: add format attributes
Thomas Hindoe Paaboel Andersen [Fri, 18 Jul 2014 11:50:12 +0000 (13:50 +0200)]
terminal: add format attributes

7 years agoterminal: silence warning
Thomas Hindoe Paaboel Andersen [Fri, 18 Jul 2014 11:32:01 +0000 (13:32 +0200)]
terminal: silence warning

7 years agonetworkd-wait-online: fix comilation warning
Tom Gundersen [Fri, 18 Jul 2014 11:25:18 +0000 (13:25 +0200)]
networkd-wait-online: fix comilation warning

sd_rtnl_message_read_string() was changed to take a const argument, update the users.

7 years agoautogen: add "t" switch with --enable-terminal
David Herrmann [Fri, 18 Jul 2014 11:00:30 +0000 (13:00 +0200)]
autogen: add "t" switch with --enable-terminal

Just temporarily add a "t" switch to "./autogen t" runs with
--enable-terminal. Once it's compile-tested enough, we can add it to the
default flags.

7 years agojournal: reduce test-journal-send timeout from 10s to 1s
David Herrmann [Fri, 18 Jul 2014 10:58:00 +0000 (12:58 +0200)]
journal: reduce test-journal-send timeout from 10s to 1s

The sleep(10) in test-journal-send is quite aggressive. We need it only
for the journal to get our cgroup information. But even that information
is not vital to the test, so a sleep(1) should be just fine.

7 years agoterminal: add systemd-subterm example
David Herrmann [Thu, 17 Jul 2014 09:10:53 +0000 (11:10 +0200)]
terminal: add systemd-subterm example

The systemd-subterm example is a stacked terminal that shows how to
use sd-term. Instead of rendering images and displaying it via X11/etc.,
it uses its parent terminal to display the page (terminal-emulator inside
a terminal-emulator) (like GNU-screen and friends do).

This is only for testing and not installed system-wide!

7 years agoterminal: add screen-handling
David Herrmann [Tue, 8 Jul 2014 13:11:29 +0000 (15:11 +0200)]
terminal: add screen-handling

The screen-layer represents the terminal-side (compared to the host-side).
It connects term_parser with term_page and implements all the required
control sequences.

We do not implement all available control sequences. Even though our
parser recognizes them, there is no need to handle them. Most of them are
legacy or unused. We try to be as compatible to xterm, so if we missed
something, we can implement it later. However, all the VT510 / VT440 stuff
can safely be skipped (who needs terminal macros? WTF?).

The keyboard-handling is still missing. It will be added once
systemd-console is available and we pulled in the key-definitions.

7 years agoterminal: add parser state-machine
David Herrmann [Sun, 15 Jun 2014 12:50:00 +0000 (14:50 +0200)]
terminal: add parser state-machine

The term-parser is used to parse any input from TTY-clients. It reads CSI,
DCS, OSC and ST control sequences and normal escape sequences. It doesn't
do anything with the parsed data besides detecting the sequence and
returning it. The caller has to react to them.

The parser also comes with its own UTF-8 helpers. The reason for that is
that we don't want to assert() or hard-fail on parsing errors. Instead,
we treat any invalid UTF-8 sequences as ISO-8859-1. This allows pasting
invalid data into a terminal (which cannot be controlled through the TTY,
anyway) and we still deal with it in a proper manner.
This is _required_ for 8-bit and 7-bit DEC modes (including the g0-g3
mappings), so it's not just an ugly fallback because we can (it's still
horribly ugly but at least we have an excuse).

7 years agoterminal: add page handling for terminals
David Herrmann [Fri, 13 Jun 2014 17:00:29 +0000 (19:00 +0200)]
terminal: add page handling for terminals

The page-layer is a one-dimensional array of lines. Combined with the
one-dimensional lines, you get a two-dimensional page. However, both
implementations, lines and pages only deal with their own dimension. That
means, lines don't know anything about other lines, and pages don't know
anything about cells.

Apart from pages, this also introduces history objects. A history object
is a scroll-back buffer. As some pages like alt-buffers don't have
histories, we keep them separate.

Pages itself forward all cell-related operations to the related line. Only
line-related operations are directly handled by the page. This is mostly
scrolling and history. To support proper resizing, we also keep a
fill-state just like lines do for cells.

7 years agoterminal: extend RGB attributes
David Herrmann [Fri, 18 Jul 2014 10:41:37 +0000 (12:41 +0200)]
terminal: extend RGB attributes

There're 3 supported color-modes: term-color-codes, 256-color-code and
rgb-color. We now use the term-color as default so zero(attr) will do what
you'd expect. Furthermore, we split rgb and 256color so users can forward
them properly without requiring an internal RGB converter.

Furthermore, a "hidden" field according to VT510rm manual is added.

7 years agoresolved: add LLMNR support for looking up names
Lennart Poettering [Fri, 18 Jul 2014 10:34:02 +0000 (12:34 +0200)]
resolved: add LLMNR support for looking up names

7 years agoshared: rename PROTO_ADDRESS_SIZE() to FAMILY_ADDRESS_SIZE()
Lennart Poettering [Fri, 18 Jul 2014 00:36:10 +0000 (02:36 +0200)]

We mostly use "family" to refer to AF_INET, AF_INET6, etc, let's use
this terminology here, too

7 years agosd-rtnl: make string returned by sd_rtnl_message_read_string() const
Lennart Poettering [Fri, 18 Jul 2014 00:35:16 +0000 (02:35 +0200)]
sd-rtnl: make string returned by sd_rtnl_message_read_string() const

7 years agotest-tables: fix build-scan
Thomas Hindoe Paaboel Andersen [Thu, 17 Jul 2014 21:53:59 +0000 (23:53 +0200)]
test-tables: fix build-scan

7 years agosd-network: fixup api
Tom Gundersen [Wed, 16 Jul 2014 09:05:25 +0000 (11:05 +0200)]
sd-network: fixup api

Do not expose link_is_loopback, people should just get this from rtnl directly.
Do not expose NTP servers as IP addresses, these must be strings.
Expose ifindex as int, not unsigned. This is what the kernel (mostly) and glibc uses.

7 years agonetworkd-wait-online: track links
Tom Gundersen [Wed, 16 Jul 2014 08:52:47 +0000 (10:52 +0200)]
networkd-wait-online: track links

Rather than refetching the link information on ever event, we liston to
rtnl to track them. Much code stolen from resolved.

This will allow us to simplify the sd-network api and don't expose
information available over rtnl.

7 years agosd-network: expose 'unmanaged' as a regular state
Tom Gundersen [Thu, 17 Jul 2014 14:49:39 +0000 (16:49 +0200)]
sd-network: expose 'unmanaged' as a regular state

This is useful to save in the consumer of the lib, unlike ENODATA/EBUSY which
means that the user should wait until a useful state is available.

7 years agoresolved: silence warnings
Thomas Hindoe Paaboel Andersen [Thu, 17 Jul 2014 19:12:39 +0000 (21:12 +0200)]
resolved: silence warnings

No need to write to r here since it will be overwritten as the first
step in parse_fail.

7 years agotest-pty: silence a warning
Thomas Hindoe Paaboel Andersen [Thu, 17 Jul 2014 18:23:53 +0000 (20:23 +0200)]
test-pty: silence a warning

7 years agoresolved: remove unused variable
Thomas Hindoe Paaboel Andersen [Thu, 17 Jul 2014 17:59:47 +0000 (19:59 +0200)]
resolved: remove unused variable

7 years agoupdate TODO
Lennart Poettering [Thu, 17 Jul 2014 17:39:23 +0000 (19:39 +0200)]
update TODO

7 years agoresolved: add DNS cache
Lennart Poettering [Thu, 17 Jul 2014 17:38:37 +0000 (19:38 +0200)]
resolved: add DNS cache

7 years agoresolved: don't trip up when an rtlink message does not include the MTU
Lennart Poettering [Thu, 17 Jul 2014 17:32:10 +0000 (19:32 +0200)]
resolved: don't trip up when an rtlink message does not include the MTU

7 years agonss-util: be a tiny bit more compatible with glibc's lookup behaviour regarding IPv6
Lennart Poettering [Thu, 17 Jul 2014 17:27:48 +0000 (19:27 +0200)]
nss-util: be a tiny bit more compatible with glibc's lookup behaviour regarding IPv6

Check for RES_USE_INET6 before we prefer IPv6 over IPv4, for all our NSS
modules. (Not that the DNS resolver that is configured with this matters
to us, but hey, let's try to be compatible).

7 years agodetect-virt: Fix Xen domU discovery
Thomas Blume [Thu, 17 Jul 2014 09:25:37 +0000 (11:25 +0200)]
detect-virt: Fix Xen domU discovery

The conditional for detection xen virtualization contained a little mistake.
It is checking for i to be empty: 'if (!i)  {', but it must check for cap instead,
because: 'cap = strsep(&i, ",")' will set cap to the discovered value and i to
the next value after the separator.
Hence, i would be empty, if there is only control_d in domcap, leading to a wrong
domU detection.

7 years agonetworkd: fix colud typo
Zbigniew Jędrzejewski-Szmek [Thu, 17 Jul 2014 12:10:10 +0000 (08:10 -0400)]
networkd: fix colud typo

sztanpet> if your already there, might fixing "Colud" to Could in 53af3b7

7 years agounits: fix typo
Zbigniew Jędrzejewski-Szmek [Thu, 17 Jul 2014 12:08:11 +0000 (08:08 -0400)]
units: fix typo

vrutkovs> zbyszek: - typo in Group name

7 years agoui/term: add line/cell/char handling for terminal pages
David Herrmann [Thu, 12 Jun 2014 15:51:14 +0000 (17:51 +0200)]
ui/term: add line/cell/char handling for terminal pages

This commit introduces libsystemd-ui, a systemd-internal helper library
that will contain all the UI related functionality. It is going to be used
by systemd-welcomed, systemd-consoled, systemd-greeter and systemd-er.
Further use-cases may follow.

For now, this commit only adds terminal-page handling based on lines only.
Follow-up commits will add more functionality.

7 years agonspawn: fix barrier-destroy call
David Herrmann [Thu, 17 Jul 2014 09:48:03 +0000 (11:48 +0200)]
nspawn: fix barrier-destroy call

I dropped the cleanup-helper before pushing so use _cleanup_() directly.

7 years agoshared: add PTY helper
David Herrmann [Fri, 11 Jul 2014 14:29:56 +0000 (16:29 +0200)]
shared: add PTY helper

This Pty API wraps the ugliness that is POSIX PTY. It takes care of:
  - edge-triggered HUP handling (avoid heavy CPU-usage on vhangup)
  - HUP vs. input-queue draining (handle HUP _after_ draining the whole
    input queue)
  - SIGCHLD vs. HUP (HUP is no reliable way to catch PTY deaths, always
    use SIGCHLD. Otherwise, vhangup() and friends will break.)
  - Output queue buffering (async EPOLLOUT handling)
  - synchronous setup (via Barrier API)

At the same time, the PTY API does not execve(). It simply fork()s and
leaves everything else to the caller. Usually, they execve() but we
support other setups, too.

This will be needed by multiple UI binaries (systemd-console, systemd-er,
...) so it's placed in src/shared/. It's not strictly related to
libsystemd-terminal, so it's not included there.

7 years agonspawn: use Barrier API instead of eventfd-util
David Herrmann [Sun, 13 Jul 2014 10:14:45 +0000 (12:14 +0200)]
nspawn: use Barrier API instead of eventfd-util

The Barrier-API simplifies cross-fork() synchronization a lot. Replace the
hard-coded eventfd-util implementation and drop it.

Compared to the old API, Barriers also handle exit() of the remote side as
abortion. This way, segfaults will not cause the parent to deadlock.

EINTR handling is currently ignored for any barrier-waits. This can easily
be added, but it isn't needed so far so I dropped it. EINTR handling in
general is ugly, anyway. You need to deal with pselect/ppoll/... variants
and make sure not to unblock signals at the wrong times. So genrally,
there's little use in adding it.

7 years agoshared: add generic IPC barrier
David Herrmann [Thu, 10 Jul 2014 13:25:47 +0000 (15:25 +0200)]
shared: add generic IPC barrier

The "Barrier" object is a simple inter-process barrier implementation. It
allows placing synchronization points and waiting for the other side to
reach it. Additionally, it has an abortion-mechanism as second-layer
synchronization to send abortion-events asynchronously to the other side.

The API is usually used to synchronize processes during fork(). However,
it can be extended to pass state through execve() so you could synchronize
beyond execve().

Usually, it's used like this (error-handling replaced by assert() for

    Barrier b;

    r = barrier_init(&b);
    assert_se(r >= 0);

    pid = fork();
    assert_se(pid >= 0);
    if (pid == 0) {
            barrier_set_role(&b, BARRIER_CHILD);

   child post-setup...
            if (CHILD_SETUP_FAILED)
            ...child setup done...

            if (!barrier_sync(&b)) {
                    /* parent setup failed */

            barrier_destroy(&b); /* redundant as execve() and exit() imply this */

            /* parent & child setup successful */

    barrier_set_role(&b, BARRIER_PARENT); parent post-setup...
            barrier_abort(&b);          /* send abortion event */
            barrier_wait_abortion(&b);  /* wait for child to abort (exit() implies abortion) */
           ...bail out...
    ...parent setup done...

    if (!barrier_sync(&b)) {
            ...child setup failed... ;
            ...bail out...


    ...child setup successfull...

This is the most basic API. Using barrier_place() to place barriers and
barrier_sync() to perform a full synchronization between both processes.
barrier_abort() places an abortion barrier which superceeds any other
barriers, exit() (or barrier_destroy()) places an abortion-barrier that
queues behind existing barriers (thus *not* replacing existing barriers
unlike barrier_abort()).

This example uses hard-synchronization with wait_abortion(), sync() and
friends. These are all optional. Barriers are highly dynamic and can be
used for one-way synchronization or even no synchronization at all
(postponing it for later). The sync() call performs a full two-way

The API is documented and should be fairly self-explanatory. A test-suite
shows some special semantics regarding abortion, wait_next() and exit().

Internally, barriers use two eventfds and a pipe. The pipe is used to
detect exit()s of the remote side as eventfds do not allow that. The
eventfds are used to place barriers, one for each side. Barriers itself
are numbered, but the numbers are reused once both sides reached the same
barrier, thus you cannot address barriers by the index. Moreover, the
numbering is implicit and we only store a counter. This makes the
implementation itself very lightweight, which is probably negligible
considering that we need 3 FDs for a barrier..

Last but not least: This barrier implementation is quite heavy. It's
definitely not meant for fast IPC synchronization. However, it's very easy
to use. And given the *HUGE* overhead of fork(), the barrier-overhead
should be negligible.

7 years agocore: nicer message when inotify watches are exhausted
Zbigniew Jędrzejewski-Szmek [Thu, 17 Jul 2014 02:52:53 +0000 (22:52 -0400)]
core: nicer message when inotify watches are exhausted

inotify_add_watch returns ENOSPC, which translates to
"No space left on device", which is misleading.

7 years agoman: document yearly and annually in systemd.time(7)
Zbigniew Jędrzejewski-Szmek [Thu, 17 Jul 2014 02:17:29 +0000 (22:17 -0400)]
man: document yearly and annually in systemd.time(7)

7 years agoresolved: enforce limit on concurrent outstanding queries
Lennart Poettering [Wed, 16 Jul 2014 23:58:14 +0000 (01:58 +0200)]
resolved: enforce limit on concurrent outstanding queries

7 years agosd-login: always use "indices" as plural of "index"
Lennart Poettering [Wed, 16 Jul 2014 23:48:40 +0000 (01:48 +0200)]
sd-login: always use "indices" as plural of "index"

So far both "indexes" and "indices" was used. Let's clean this up, and
stick to indices, since it appears to be used more frequently.

7 years agosd-network: rename "index" parameter to "ifindex"
Lennart Poettering [Wed, 16 Jul 2014 23:46:21 +0000 (01:46 +0200)]
sd-network: rename "index" parameter to "ifindex"

makes things a bit clearer and avoids any clashes with libc's index()

7 years agosd-network: if a boolean is mising, we should just take it as false
Lennart Poettering [Wed, 16 Jul 2014 23:41:03 +0000 (01:41 +0200)]
sd-network: if a boolean is mising, we should just take it as false

That way, we can deprecate fields later on without problems

7 years agosd-network: remove redundant array size parameter from functions that return arrays
Lennart Poettering [Wed, 16 Jul 2014 23:39:46 +0000 (01:39 +0200)]
sd-network: remove redundant array size parameter from functions that return arrays

As long as the number of array entries is relatively small it's nicer to
simply return the number of entries directly, instead of using a size_t*
return parameter for it.

7 years agoresolved: fix check for mdns names
Lennart Poettering [Wed, 16 Jul 2014 23:14:19 +0000 (01:14 +0200)]
resolved: fix check for mdns names

7 years agoresolved: we are never authoritative for localhost
Lennart Poettering [Wed, 16 Jul 2014 23:14:07 +0000 (01:14 +0200)]
resolved: we are never authoritative for localhost