Lennart Poettering
603772810c
fileio: remove unnecessary initialization
2018-12-02 13:22:28 +01:00
Lennart Poettering
8bdc9a90db
fileio: include ctype.h with <> rather than ""
...
It's a system header after all.
2018-12-02 13:22:28 +01:00
Lennart Poettering
2c8f15aeca
Merge pull request #11006 from poettering/conf-file-fix
...
minor fixes for conf-files.c
2018-12-01 00:47:22 +01:00
Lennart Poettering
ac20048fc0
Merge pull request #11002 from keszybz/path_join-merging
...
Path join merging
2018-12-01 00:44:58 +01:00
Lennart Poettering
f8ee4eaa48
Merge pull request #11004 from keszybz/remove-fixme-comment
...
socket-util: drop obsolete FIXME comment and add test
2018-12-01 00:01:11 +01:00
Zbigniew Jędrzejewski-Szmek
652ef29887
path-util: allow NULLs in arguments to path_join()
...
This removes the need to remember to put strempty() in places, thus reducing
the likelihood of a stupid mistake.
2018-11-30 22:21:17 +01:00
Zbigniew Jędrzejewski-Szmek
15dca3711d
basic/socket-util: use c-escaping to print unprintable socket paths
...
We are pretty careful to reject abstract sockets that are too long to fit in
the address structure as a NUL-terminated string. And since we parse sockets as
strings, it is not possible to embed a NUL in the the address either. But we
might receive an external socket (abstract or not), and we want to be able to
print its address in all cases. We would call socket_address_verify() and
refuse to print various sockets that the kernel considers legit.
Let's do the strict verification only in case of socket addresses we parse and
open ourselves, and do less strict verification when printing addresses of
existing sockets, and use c-escaping to print embedded NULs and such.
More tests are added.
This should make LGTM happier because on FIXME comment is removed.
2018-11-30 21:58:47 +01:00
Zbigniew Jędrzejewski-Szmek
3a48499153
shared/socket-util: do not print empty CID
...
That's just ugly.
2018-11-30 21:40:04 +01:00
Lennart Poettering
380b82d678
conf-files: remove unused function
2018-11-30 16:56:35 +01:00
Lennart Poettering
a7181c671a
conf-files: remove misplaced log_oom()
...
The caller should log in this case (and all callers in fact already do),
hence let's remove the duplicate logging here.
2018-11-30 16:55:57 +01:00
Lennart Poettering
243dd6ae1d
conf-files: improve algorithm O(n²) → O(n)
2018-11-30 16:55:33 +01:00
Lennart Poettering
8a453c9dfc
macro: update DIV_ROUND_UP() so that it can be called nested
2018-11-30 16:46:10 +01:00
Lennart Poettering
b06f0cc625
parse-util: allow parse_boolean() to take a NULL argument
...
It's pretty useful to allow parse_boolean() to take a NULL argument and
return an error in that case, rather than abort. i.e. making this a
runtime rather than programming error allows us to shorten code
elsewhere.
2018-11-30 16:46:09 +01:00
Lennart Poettering
5f1b0cc6d0
locale-util: add logic to output smiley emojis at various happiness levels
2018-11-30 16:19:29 +01:00
Zbigniew Jędrzejewski-Szmek
62a85ee0a9
tree-wide: rename path_join_many() to path_join()
...
$ git grep -e path_join_many -l|xargs sed -r -i 's/path_join_many/path_join/g'
The two test functions are merged into one.
2018-11-30 10:59:47 +01:00
Zbigniew Jędrzejewski-Szmek
30016f21b3
tree-wide: replace path_join with path_join_many
2018-11-30 10:40:38 +01:00
Zbigniew Jędrzejewski-Szmek
b2ac2b01c8
Merge pull request #10996 from poettering/oci-prep
...
Preparation for the nspawn-OCI work
2018-11-30 10:09:00 +01:00
Zbigniew Jędrzejewski-Szmek
77c772f227
Move mount-util.c to shared/
...
libmount dep is moved from libbasic to libshared, potentially removing
libmount from some build products.
2018-11-29 21:03:44 +01:00
Zbigniew Jędrzejewski-Szmek
049af8ad0c
Split out part of mount-util.c into mountpoint-util.c
...
The idea is that anything which is related to actually manipulating mounts is
in mount-util.c, but functions for mountpoint introspection are moved to the
new file. Anything which requires libmount must be in mount-util.c.
This was supposed to be a preparation for further changes, with no functional
difference, but it results in a significant change in linkage:
$ ldd build/libnss_*.so.2
(before)
build/libnss_myhostname.so.2:
linux-vdso.so.1 (0x00007fff77bf5000)
librt.so.1 => /lib64/librt.so.1 (0x00007f4bbb7b2000)
libmount.so.1 => /lib64/libmount.so.1 (0x00007f4bbb755000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4bbb734000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4bbb56e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4bbb8c1000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f4bbb51b000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f4bbb512000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4bbb4e3000)
libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f4bbb45e000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4bbb458000)
build/libnss_mymachines.so.2:
linux-vdso.so.1 (0x00007ffc19cc0000)
librt.so.1 => /lib64/librt.so.1 (0x00007fdecb74b000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007fdecb744000)
libmount.so.1 => /lib64/libmount.so.1 (0x00007fdecb6e7000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fdecb6c6000)
libc.so.6 => /lib64/libc.so.6 (0x00007fdecb500000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdecb8a9000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x00007fdecb4ad000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fdecb4a2000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fdecb475000)
libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007fdecb3f0000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fdecb3ea000)
build/libnss_resolve.so.2:
linux-vdso.so.1 (0x00007ffe8ef8e000)
librt.so.1 => /lib64/librt.so.1 (0x00007fcf314bd000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007fcf314b6000)
libmount.so.1 => /lib64/libmount.so.1 (0x00007fcf31459000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fcf31438000)
libc.so.6 => /lib64/libc.so.6 (0x00007fcf31272000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcf31615000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x00007fcf3121f000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fcf31214000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fcf311e7000)
libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007fcf31162000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fcf3115c000)
build/libnss_systemd.so.2:
linux-vdso.so.1 (0x00007ffda6d17000)
librt.so.1 => /lib64/librt.so.1 (0x00007f610b83c000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f610b835000)
libmount.so.1 => /lib64/libmount.so.1 (0x00007f610b7d8000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f610b7b7000)
libc.so.6 => /lib64/libc.so.6 (0x00007f610b5f1000)
/lib64/ld-linux-x86-64.so.2 (0x00007f610b995000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f610b59e000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f610b593000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f610b566000)
libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f610b4e1000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f610b4db000)
(after)
build/libnss_myhostname.so.2:
linux-vdso.so.1 (0x00007fff0b5e2000)
librt.so.1 => /lib64/librt.so.1 (0x00007fde0c328000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fde0c307000)
libc.so.6 => /lib64/libc.so.6 (0x00007fde0c141000)
/lib64/ld-linux-x86-64.so.2 (0x00007fde0c435000)
build/libnss_mymachines.so.2:
linux-vdso.so.1 (0x00007ffdc30a7000)
librt.so.1 => /lib64/librt.so.1 (0x00007f06ecabb000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f06ecab4000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f06eca93000)
libc.so.6 => /lib64/libc.so.6 (0x00007f06ec8cd000)
/lib64/ld-linux-x86-64.so.2 (0x00007f06ecc15000)
build/libnss_resolve.so.2:
linux-vdso.so.1 (0x00007ffe95747000)
librt.so.1 => /lib64/librt.so.1 (0x00007fa56a80f000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007fa56a808000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa56a7e7000)
libc.so.6 => /lib64/libc.so.6 (0x00007fa56a621000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa56a964000)
build/libnss_systemd.so.2:
linux-vdso.so.1 (0x00007ffe67b51000)
librt.so.1 => /lib64/librt.so.1 (0x00007ffb32113000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007ffb3210c000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffb320eb000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffb31f25000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffb3226a000)
I don't quite understand what is going on here, but let's not be too picky.
2018-11-29 21:03:44 +01:00
Lennart Poettering
de321f5228
fs-util: beef up chmod_and_chown() a bit
2018-11-29 20:21:39 +01:00
Lennart Poettering
d739169804
capability: add new type for maintaining all five cap sets as one
2018-11-29 20:21:39 +01:00
Lennart Poettering
54b22b2643
tree-wide: port various parts of the code over to the new device_major_minor_path() calls
2018-11-29 20:21:39 +01:00
Lennart Poettering
846b3bd61e
stat-util: add new APIs device_path_make_{major_minor|canonical}() and device_path_parse_major_minor()
...
device_path_make_{major_minor|canonical) generate device node paths
given a mode_t and a dev_t. We have similar code all over the place,
let's unify this in one place. The former will generate a "/dev/char/"
or "/dev/block" path, and never go to disk. The latter then goes to disk
and resolves that path to the actual path of the device node.
device_path_parse_major_minor() reverses device_path_make_major_minor(),
also withozut going to disk.
We have similar code doing something like this at various places, let's
unify this in a single set of functions. This also allows us to teach
them special tricks, for example handling of the
/run/systemd/inaccessible/{blk|chr} device nodes, which we use for
masking device nodes, and which do not exist in /dev/char/* and
/dev/block/*
2018-11-29 20:21:39 +01:00
Lennart Poettering
3a47c40d97
tree-wide: port various parts of the code to use parse_dev()
2018-11-29 20:03:56 +01:00
Lennart Poettering
61e0111df9
path-util: port path_join() over to path_join_many()
...
We should probably drop path_join() entirely in the long run (and
then rename path_join_many() to it?), but for now let's make one a
wrapper for the other.
2018-11-29 20:03:56 +01:00
Lennart Poettering
cd8194a389
path-util: add new path_join_many() API
2018-11-29 20:03:56 +01:00
Lennart Poettering
de06c0cf77
parse-util: rework parse_dev() based on safe_atou() and DEVICE_MAJOR_VALID()/DEVICE_MINOR_VALID()
...
Let's be a bit more careful when parsing major/minor pairs, and filter
out more corner cases. This also means using safe_atou() rather than
sscanf() to avoid weird negative unsigned handling and such.
2018-11-29 20:02:39 +01:00
Lennart Poettering
fb2430c6e5
stat-util: add macros for checking whether major and minor values are in range
...
As it turns out glibc and the Linux kernel have different ideas about
the size of dev_t and how many bits exist for the major and the minor.
When validating major/minor numbers we should check against the kernel's
actual sizes, hence add macros for this.
2018-11-29 20:02:39 +01:00
Zbigniew Jędrzejewski-Szmek
401faa3533
Merge pull request #10357 from poettering/import-fs
...
machinectl import-fs command and other fixes
2018-11-29 16:38:46 +01:00
Yu Watanabe
50ae773f85
Merge pull request #10970 from yuwata/from-name-return-negative-errno
...
util: make *_from_name() returns negative errno on error
2018-11-29 03:18:03 +09:00
Susant Sahani
926062f083
networkd: add support to configure ip rule port range and protocol.
...
Please see:
iprule: support for ip_proto, sport and dport match options
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=f686f764682745daf6a93b0a6330ba42a961f858
Closes 10622
2018-11-28 20:06:28 +05:30
Yu Watanabe
acf4d15893
util: make *_from_name() returns negative errno on error
2018-11-28 20:20:50 +09:00
Yu Watanabe
7b5e750d2a
util: also move scripts related to socket-protocol-list.[ch] to shared/
...
The source files were moved to shared/. Let's also move the relevant scripts.
2018-11-28 20:20:29 +09:00
Yu Watanabe
6ec439fd4b
tools: move generate-gperfs.py to tools/
2018-11-28 20:19:41 +09:00
Lennart Poettering
59a2a18e27
missing.h: remove duplicate definition of 'struct ethtool_link_settings'
...
Fixes : #10966
2018-11-28 10:37:03 +01:00
Lennart Poettering
4101c1accb
locale-util: add unicode bullet to special glyphs
2018-11-28 08:43:47 +01:00
Lennart Poettering
5cfa2c3dc0
tree-wide: use IOVEC_MAKE() at many places
2018-11-27 10:12:27 +01:00
Susant Sahani
2266864b04
networkd: Add support for ERSPAN tunnel
...
Please see: https://patchwork.ozlabs.org/patch/800327/
```
[NetDev]
Name=erspan-test
Kind=erspan
[Tunnel]
Independent=true
ERSPANIndex=123
Local = 172.16.1.200
Remote = 172.16.1.100
Key=101
SerializeTunneledPackets=true
```
2018-11-27 11:04:42 +09:00
Lennart Poettering
020b39497a
tree-wide: use SWAP_TWO a bit more
2018-11-26 22:17:34 +01:00
Lennart Poettering
844416b64c
stat-util: add fd_verify_directory(), similar to fd_verify_regular()
2018-11-26 18:09:01 +01:00
Lennart Poettering
0c9448fa82
copy: remove reflinking debug message
...
It pretty much ends up in an inner loop most of the time, hence let's
just remove it. This is pretty easily debuggable with strace anyway...
2018-11-26 18:09:01 +01:00
Lennart Poettering
a60c8eee10
path-util: add helper for extracting last filename from path
2018-11-26 18:09:01 +01:00
Lennart Poettering
77e0a1b5e0
path-util: handle NULL inputs in last_path_component()
2018-11-26 18:09:01 +01:00
Lennart Poettering
5f7ecd610c
import: drop logic of setting up /var/lib/machines as btrfs loopback mount
...
Let's simplify things and drop the logic that /var/lib/machines is setup
as auto-growing btrfs loopback file /var/lib/machines.raw.
THis was done in order to make quota available for machine management,
but quite frankly never really worked properly, as we couldn't grow the
file system in sync with its use properly. Moreover philosophically it's
problematic overriding the admin's choice of file system like this.
Let's hence drop this, and simplify things. Deleting code is a good
feeling.
Now that regular file systems provide project quota we could probably
add per-machine quota support based on that, hence the btrfs quota
argument is not that interesting anymore (though btrfs quota is a bit
more powerful as it allows recursive quota, i.e. that the machine pool
gets an overall quota in addition to per-machine quota).
2018-11-26 18:09:01 +01:00
Lennart Poettering
1d7579c473
machine: add support for importing containers from plain directories
...
Fixes : #2728
This is also supposed to be preparation for doing #10234 eventually,
where a very similar operation is requested: instead of importing a tree
to /var/lib/machines it would need to be imported into
/var/lib/portables/.
2018-11-26 18:09:01 +01:00
Lennart Poettering
b3cade0c27
copy: support getting progress feedback from the various copy functions
...
This adds two optional functions that may be passed to the various copy
functions. One is invoked whenever we start copying a new file object,
the other while we copy file payload in each loop iteration.
When the caller passes one or both they can get notifications about copy
progress, for example to log where things are.
2018-11-26 18:09:01 +01:00
Yu Watanabe
938dbb292a
Merge pull request #10901 from poettering/startswith-list
...
add new STARTSWITH_SET() macro
2018-11-26 22:40:51 +09:00
Lennart Poettering
a666d07eac
Merge pull request #10910 from yuwata/list-cleanups
...
basic/list: tiny fixes
2018-11-26 14:19:03 +01:00
Lennart Poettering
9630d4dd68
Merge pull request #10894 from poettering/root-cgroup-fix
...
A multitude of cgroup fixes
2018-11-26 14:13:01 +01:00
Lennart Poettering
3ebc048b6b
terminal-util: use PATH_STARTSWITH_SET() instead of plain startswith() where appropriate
...
After all, we deal with paths here.
2018-11-26 14:08:46 +01:00