summaryrefslogtreecommitdiff
path: root/src/libsystemd
AgeCommit message (Collapse)Author
2015-04-21sd-bus: augmenting cgroups-based creds when we have the cgroup path already ↵Lennart Poettering
is free
2015-04-21sd-bus: when augmenting creds, don't override any creds in any caseLennart Poettering
Let's better be safe than sorry.
2015-04-21sd-bus: when copying creds objects, make sure we copy even the implicit well ↵Lennart Poettering
known names
2015-04-20networkd: Add support for bond option.Susant Sahani
This patch adds configurational support for bond option. Test conf: bond.netdev --- [NetDev] Name=bond1 Kind=bond [Bond] ArpAllTargets=all PrimaryReselect=better ArpIntervalSec=10s ArpIpTargets= 192.168.8.102 192.168.8.101 192.168.8.102 --- $cat /proc/net/bonding/bond1 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: load balancing (round-robin) MII Status: up MII Polling Interval (ms): 0 Up Delay (ms): 0 Down Delay (ms): 0 ARP Polling Interval (ms): 10000 ARP IP target/s (n.n.n.n form): 192.168.8.100, 192.168.8.101, 192.168.8.102
2015-04-17sd-device: simplify enumerator hacksDavid Herrmann
Boolean arithmetic is great, use it! if (a && !b) return 1; if (!a && b) return -1, is equivalent to if (a != b) return a - b; Furthermore: r = false; if (condition) r = true; is equivalent to: r = condition;
2015-04-17sd-device: uniformly handle missing devicesTom Gundersen
sd_device_new_from_* now returns -ENODEV when the device does not exist, and the enumerator silently drops these errors as missing devices is exepected.
2015-04-17sd-device: enumerator - match only on initialized devices by defaultTom Gundersen
It is still possible to include uninitialized ones, but now that is opt-in. In most cases people only want initialized devices. Exception is if you want to work without udev running. Suggested by David Herrmann.
2015-04-17sd-device: enumerator - don't expose add_device()Tom Gundersen
This is rarely, if ever, used. Drop it from the new public API and only keep it for the legacy API. Suggested by David Herrmann.
2015-04-16sd-device: add device-enumerator libraryTom Gundersen
2015-04-16sd-bus: add more comments to the credential decision logicLennart Poettering
2015-04-14sd-device: fix typoZbigniew Jędrzejewski-Szmek
2015-04-14sd-devcie: fix typoTom Gundersen
2015-04-14sd-device: fix reading of subsystemTom Gundersen
2015-04-14sd-device: allow uevent files to be write-onlyTom Gundersen
2015-04-12bus-util: add articles to explanation messagesZbigniew Jędrzejewski-Szmek
We are talking about one member of a group of things (resource limits, signals, timeouts), without specifying which one. An indenfinite article is in order. When we are talking about the control process, it's a specific one, so the definite article is used.
2015-04-11bus: implement bus_path_{en,de}code_unique()David Herrmann
Whenever we provide a bus API that allows clients to create and manage server-side objects, we need to provide a unique name for these objects. There are two ways to provide them: 1) Let the server choose a name and return it as method reply. 2) Let the client pass its name of choice in the method arguments. The first method is the easiest one to implement. However, it suffers from a race condition: If a client creates an object asynchronously, it cannot destroy that object until it received the method reply. It cannot know the name of the new object, thus, it cannot destroy it. Furthermore, this method enforces a round-trip. If the client _depends_ on the method call to succeed (eg., it would close() the connection if it failed), the client usually has no reason to wait for the method reply. Instead, the client can immediately schedule further method calls on the newly created object (in case the API guarantees in-order method-call handling). The second method fixes both problems: The client passes an object name with the method-call. The server uses it to create the object. Therefore, the client can schedule object destruction even if the object-creation hasn't finished, yet (again, requiring in-order method-call handling). Furthermore, the client can schedule further method calls on the newly created object, before the constructor returned. There're two problems to solve, though: 1) Object names are usually defined via dbus object paths, which are usually globally namespaced. Therefore, multiple clients must be able to choose unique object names without interference. 2) If multiple libraries share the same bus connection, they must be able to choose unique object names without interference. The first problem is solved easily by prefixing a name with the unique-bus-name of a connection. The server side must enforce this and reject any other name. The second problem is solved by providing unique suffixes from within sd-bus. As long as sd-bus always returns a fresh new ID, if requested, multiple libraries will never interfere. This implementation re-uses bus->cookie as ID generator, which already provides unique IDs for each bus connection. This patch introduces two new helpers: bus_path_encode_unique(sd_bus *bus, const char *prefix, const char *sender_id, const char *external_id, char **ret_path); This creates a new object-path via the template '/prefix/sender_id/external_id'. That is, it appends two new labels to the given prefix. If 'sender_id' is NULL, it will use bus->unique_name, if 'external_id' is NULL, it will allocate a fresh, unique cookie from bus->cookie. bus_path_decode_unique(const char *path, const char *prefix, char **ret_sender, char **ret_external); This reverses what bus_path_encode_unique() did. It parses 'path' from the template '/prefix/sender/external' and returns both suffix-labels in 'ret_sender' and 'ret_external'. In case the template does not match, 0 is returned and both output arguments are set to NULL. Otherwise, 1 is returned and the output arguments contain the decoded labels. Note: Client-side allocated IDs are inspired by the Wayland protocol (which itself was inspired by X11). Wayland uses those IDs heavily to avoid round-trips. Clients can create server-side objects and send method calls without any round-trip and waiting for any object IDs to be returned. But unlike Wayland, DBus uses gobally namespaced object names. Therefore, we have to add the extra step by adding the unique-name of the bus connection.
2015-04-11shared: add terminal-util.[ch]Ronny Chevalier
2015-04-11shared: add random-util.[ch]Ronny Chevalier
2015-04-10shared: add process-util.[ch]Ronny Chevalier
2015-04-10shared: add formats-util.hRonny Chevalier
2015-04-10sd-event: simplify sd_event_run()Lennart Poettering
2015-04-10bus-util: be more verbose if dbus job failsMichal Sekletar
Users might have hard time figuring out why exactly their systemctl request failed. If dbus job fails try to figure out more details about failure by examining Result property of the service. https://bugzilla.redhat.com/show_bug.cgi?id=1016680
2015-04-09bus: simplify bus_message_read_strv_extend()David Herrmann
Avoid unbound for(;;) loop and use the established coding-style: while ((r = sd_bus_message_read*(...)) > 0) { } if (r < 0) return r; This is much easier to read and used all over the code base.
2015-04-09bus: use free_and_strdup()David Herrmann
Save some LOCs by replacing strdup()+error-handling+free+assign with free_and_strdup().
2015-04-09util: add shell_maybe_quote() call for preparing a string for shell cmdline ↵Lennart Poettering
inclusion If necessary the passed string is enclosed in "", and all special characters escapes. This also ports over usage in bus-util.c and job.c to use this, instead of a incorrect local implementation that forgets to properly escape.
2015-04-08sd-rtnl: properly size attribute array if IFA_FLAGS was missingLennart Poettering
2015-04-07polkit: rename bus_verify_polkit() to bus_test_polkit() and make it strictly ↵Lennart Poettering
non-interactive Interactive authorization should only happen asynchronously, hence disallow it in synchronous bus_verify_polkit(), and rename it to bus_test_polkit(). This way even if the bus message header asks for interactive authorization, we'll ask for non-interactive authorization which is actually the desired behaviour if CanSuspend, CanHibernate and friends, which call this function.
2015-04-07util: rework cunescape(), improve error handlingLennart Poettering
Change cunescape() to return a normal error code, so that we can distuingish OOM errors from parse errors. This also adds a flags parameter to control whether "relaxed" or normal parsing shall be done. If set no parse failures are generated, and the only reason why cunescape() can fail is OOM.
2015-04-07device: fix sysattr newline cutterDavid Herrmann
Right now, we always drop the last character of all values we write to sysfs. Fix this!
2015-04-05sd-device: don't use alloca() within loopsTom Gundersen
I shall not use alloca() within loops I shall not use alloca() within loops I shall not use alloca() within loops I shall not use alloca() within loops ...
2015-04-03sd-device,udevd: fix spelling /ammend/amend/Tom Gundersen
2015-04-03sd-device: fix deserialization from netlinkTom Gundersen
Use the standard FOREACH_WORD* macros. The current code was broken in the devlink case so the last one received was being dropped, causing https://bugs.freedesktop.org/show_bug.cgi?id=89894
2015-04-03sd-device: get_properties_{nulstr,strv} - don't recreate the buffer ↵Tom Gundersen
unnecessarily
2015-04-03sd-device: get_sysattr_value - don't leak returned valueTom Gundersen
This was getting leaked as a copy was added to the hashmap, simply add the returned value instead. This should fix CID #1292806.
2015-04-03sd-device: initialize variableTom Gundersen
sysnum would not be initialized if sysname had no trailing digits.
2015-04-02libsystemd: add sd-device libraryTom Gundersen
This provides equivalent functionality to libudev-device, but in the systemd style. The public API only caters to creating sd_device objects from for devices that already exist in /sys, there is no support for listening for monitoring events or creating devices received over the udev netlink protocol. The private API contains the necessary functionality to make sd-device a drop-in replacement for libudev-device, but which we would not otherwise want to export.
2015-03-27fix gcc warnings about uninitialized variablesHarald Hoyer
like: src/shared/install.c: In function ‘unit_file_lookup_state’: src/shared/install.c:1861:16: warning: ‘r’ may be used uninitialized in this function [-Wmaybe-uninitialized] return r < 0 ? r : state; ^ src/shared/install.c:1796:13: note: ‘r’ was declared here int r; ^
2015-03-27sd-rtnl: Always enable IFA_FLAGSPatrik Flykt
IFA_FLAGS is a discrete value and has no preprocessor #define defined for it. Fix this by always using the value.
2015-03-23sd-rtnl: handle empty multi-part message from the kernelAlin Rauta
We strips out NLMSG_DONE piece from a multi-part message adding into the receive queue only the messages containing actual data. If we send a request to the kernel for getting the forwarding database table (just an example), the response will be a multi-part message like below: 1. FDB entry 1; 2. FDB entry 2; 3. NLMSG_DONE; We strip out "3. NLMSG_DONE;" part and places into the receive queue a pointer to "1. FDB entry 1; 2. FDB entry 2". But if the FDB table is empty, the respose from the kernel will look like below: 1. NLMSG_DONE; We strip out "1. NLMSG_DONE;" part and since there is no actual data got, it continues waiting until reaching timeout. Therefore, a call to "sd_rtnl_call" to send and wait for a response from kernel will exit with timeout which is interpreted as error in communication. This patch puts the NLMSG_DONE message on the receive queue if it ends an empty multi-part message. This situation is detected in sd_rtnl_call() and in the callback code and NULL is returned to the caller instead. [tomegun: - added/reworded commit message - extend the same support to sd_rtnl_call_async() - drop debug logging from library, we only do this if something is really wrong, but an empty multi-part message is perfectly normal - modernize the code we touch whilst we are at it]
2015-03-15Add (void) where we don't care about return valueZbigniew Jędrzejewski-Szmek
2015-03-14sd-event: sd_event_run - only return 0 on timeoutTom Gundersen
sd_event_dispatch() returns 0 on FINISH, so let's eat that up.
2015-03-14sd-event: rename PASSIVE/PREPARED to INITIAL/ARMEDTom Gundersen
2015-03-13sd-daemon: simplify sd_pid_notify_with_fdsZbigniew Jędrzejewski-Szmek
Coverity was complaining that CMSG_NXTHDR is used without checking the return value. In this case it cannot fail, but it is a good excuse to simplify the function a bit. CID #1261726.
2015-03-13bus: explicitly ignore failure during error handlingZbigniew Jędrzejewski-Szmek
CID #1237548.
2015-03-13Use space after a silencing (void)Zbigniew Jędrzejewski-Szmek
We were using a space more often than not, and this way is codified in CODING_STYLE.
2015-03-13sd-resolve: use different element of union to make code more readableZbigniew Jędrzejewski-Szmek
They both point to the same location, but the reader is not forced to look back to the beginning of the function to see that.
2015-03-13sd-rtnl: read_message - don't set group if not neededTom Gundersen
2015-03-13sd-rtnl: process - only apply matches to broadcast messagesTom Gundersen
2015-03-13sd-rtnl: improve detection of broadcast messagesTom Gundersen
Do not rely on nl_pid == 0, but check the groups instead. We currently avoid using nl_pid == 0 for unicast anyway, so this should be redundant, but let's try to be correct.
2015-03-13sd-rtnl: never set serial to 0Tom Gundersen
In the unlikely event that we wrap the counter, skip 0 as this is used for broadcasts. Suggested by Richard Maw.