Compare commits

..

7 Commits

Author SHA1 Message Date
Haochen Tong f12d19b304 home: fix segfault when parsing arguments in PAM module 2020-03-16 16:20:11 +09:00
Mike Kazantsev 0e4daba173 NEWS: fix use of tabs instead of spaces for one item 2020-03-16 12:33:43 +09:00
Daan De Meyer aaf6c75061 sd-bus: Add sd_bus_set_fd documentation along with some cleanups. 2020-03-16 12:31:27 +09:00
Frantisek Sumsal 197298ff9f test: wait a bit after starting the test service
otherwise we might end up being faster than the unit itself, causing
unexpected fails, like:

```
testsuite.sh[297]: + systemctl start issue_14566_test
testsuite.sh[297]: + systemctl status issue_14566_test
testsuite.sh[304]: ● issue_14566_test.service - Issue 14566 Repro
testsuite.sh[304]:      Loaded: loaded (/etc/systemd/system/issue_14566_test.service; static; vendor preset: enabled)
testsuite.sh[304]:      Active: active (running) since Sat 2020-03-14 02:02:23 UTC; 417ms ago
testsuite.sh[304]:    Main PID: 301 ((repro.sh))
testsuite.sh[304]:       Tasks: 1 (limit: 535)
testsuite.sh[304]:      Memory: 180.0K
testsuite.sh[304]:         CPU: 122ms
testsuite.sh[304]:      CGroup: /system.slice/issue_14566_test.service
testsuite.sh[304]:              └─301 [(repro.sh)]
testsuite.sh[307]: ++ cat /leakedtestpid
testsuite.sh[307]: cat: /leakedtestpid: No such file or directory
testsuite.sh[297]: + leaked_pid=
```
2020-03-16 12:28:14 +09:00
Yu Watanabe 9790ca75fc
Merge pull request #15104 from ssahani/networkctl-qdisc
networkctl: Add support to display qdisc
2020-03-16 12:14:00 +09:00
Susant Sahani e810df37e4 networkctl: Add support to display qdisc
./networkctl status ens38                                                                                                                                                                ─╯
● 4: ens38
             Link File: /usr/lib/systemd/network/99-default.link
          Network File: /usr/lib/systemd/network/10-ens38.network
                  Type: ether
                 State: routable (configured)
     Alternative Names: enp2s6
                  Path: pci-0000:02:06.0
                Driver: e1000
                Vendor: Intel Corporation
                 Model: 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
            HW Address: 00:0c:29:d2:42:7c (VMware, Inc.)
                   MTU: 1500 (min: 46, max: 16110)
                 QDisc: fq_codel        <============================
  Queue Length (Tx/Rx): 1/1
      Auto negotiation: yes
                 Speed: 1Gbps
                Duplex: full
                  Port: tp
               Address: 192.168.5.123
                        fe80::20c:29ff:fed2:427c
2020-03-13 10:55:31 +01:00
Susant Sahani 8394952777 sd-netlink: Add IFLA_QDISC 2020-03-13 10:54:02 +01:00
6 changed files with 61 additions and 16 deletions

4
NEWS
View File

@ -501,8 +501,8 @@ CHANGES WITH 244:
configuration time using the -Dservice-watchdog= setting. If set to configuration time using the -Dservice-watchdog= setting. If set to
empty, the watchdogs will be disabled. empty, the watchdogs will be disabled.
* systemd-resolved validates IP addresses in certificates now when GnuTLS * systemd-resolved validates IP addresses in certificates now when GnuTLS
is being used. is being used.
* libcryptsetup >= 2.0.1 is now required. * libcryptsetup >= 2.0.1 is now required.

View File

@ -22,6 +22,7 @@
<refnamediv> <refnamediv>
<refname>sd_bus_get_fd</refname> <refname>sd_bus_get_fd</refname>
<refname>sd_bus_set_fd</refname>
<refname>sd_bus_get_events</refname> <refname>sd_bus_get_events</refname>
<refname>sd_bus_get_timeout</refname> <refname>sd_bus_get_timeout</refname>
@ -37,6 +38,13 @@
<paramdef>sd_bus *<parameter>bus</parameter></paramdef> <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
</funcprototype> </funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_set_fd</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>int <parameter>input_fd</parameter></paramdef>
<paramdef>int <parameter>output_fd</parameter></paramdef>
</funcprototype>
<funcprototype> <funcprototype>
<funcdef>int <function>sd_bus_get_events</function></funcdef> <funcdef>int <function>sd_bus_get_events</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef> <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
@ -57,8 +65,13 @@
object. This descriptor can be used with <citerefentry object. This descriptor can be used with <citerefentry
project='man-pages'><refentrytitle>poll</refentrytitle><manvolnum>3</manvolnum></citerefentry> or a similar project='man-pages'><refentrytitle>poll</refentrytitle><manvolnum>3</manvolnum></citerefentry> or a similar
function to wait for I/O events on the specified bus connection object. If the bus object was configured with the function to wait for I/O events on the specified bus connection object. If the bus object was configured with the
<citerefentry><refentrytitle>sd_bus_set_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry> function, then <function>sd_bus_set_fd()</function> function, then the <parameter>input_fd</parameter> file descriptor used in
the <parameter>input_fd</parameter> file descriptor used in that call is returned.</para> that call is returned.</para>
<para><function>sd_bus_set_fd()</function> sets the file descriptors used to communicate from a message bus
object. Both <parameter>input_fd</parameter> and <parameter>output_fd</parameter> must be valid file descriptors.
The same file descriptor may be used as both the input and the output file descriptor. This function must be called
before the bus is started.</para>
<para><function>sd_bus_get_events()</function> returns the I/O events to wait for, suitable for passing to <para><function>sd_bus_get_events()</function> returns the I/O events to wait for, suitable for passing to
<function>poll()</function> or a similar call. Returns a combination of <constant>POLLIN</constant>, <function>poll()</function> or a similar call. Returns a combination of <constant>POLLIN</constant>,
@ -96,14 +109,17 @@
<refsect1> <refsect1>
<title>Return Value</title> <title>Return Value</title>
<para><function>sd_bus_get_fd()</function> returns the file descriptor used for communication, or a negative <para>On success, <function>sd_bus_get_fd()</function> returns the file descriptor used for communication. On failure,
<varname>errno</varname>-style error code on error.</para> it returns a negative errno-style error code.</para>
<para><function>sd_bus_get_events()</function> returns the I/O event mask to use for I/O event watching, or a <para>On success, <function>sd_bus_set_fd()</function> returns a non-negative integer. On failure, it returns a
negative <varname>errno</varname>-style error code on error.</para> negative errno-style error code.</para>
<para><function>sd_bus_get_timeout()</function> returns zero or positive on success, or a negative <para>On success, <function>sd_bus_get_events()</function> returns the I/O event mask to use for I/O event watching.
<varname>errno</varname>-style error code on error.</para> On failure, it returns a negative errno-style error code.</para>
<para>On success, <function>sd_bus_get_timeout()</function> returns a non-negative integer. On failure, it returns a
negative errno-style error code.</para>
<refsect2> <refsect2>
<title>Errors</title> <title>Errors</title>
@ -137,6 +153,19 @@
<function>sd_bus_set_fd()</function>, which <function>sd_bus_get_fd()</function> cannot <function>sd_bus_set_fd()</function>, which <function>sd_bus_get_fd()</function> cannot
return.</para></listitem> return.</para></listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><constant>-EBADF</constant></term>
<listitem><para>An invalid file descriptor was passed to <function>sd_bus_set_fd()</function>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-ENOPKG</constant></term>
<listitem><para>The bus cannot be resolved.</para></listitem>
</varlistentry>
</variablelist> </variablelist>
</refsect2> </refsect2>
</refsect1> </refsect1>
@ -149,7 +178,6 @@
<para> <para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_set_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_process</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_process</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_attach_event</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_attach_event</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_wait</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_wait</refentrytitle><manvolnum>3</manvolnum></citerefentry>,

View File

@ -36,7 +36,7 @@ static int parse_argv(
for (i = 0; i < argc; i++) { for (i = 0; i < argc; i++) {
const char *v; const char *v;
if ((v = startswith(argv[1], "suspend="))) { if ((v = startswith(argv[i], "suspend="))) {
int k; int k;
k = parse_boolean(v); k = parse_boolean(v);

View File

@ -543,9 +543,7 @@ static const NLType rtnl_link_types[] = {
[IFLA_IFNAME] = { .type = NETLINK_TYPE_STRING, .size = IFNAMSIZ - 1 }, [IFLA_IFNAME] = { .type = NETLINK_TYPE_STRING, .size = IFNAMSIZ - 1 },
[IFLA_MTU] = { .type = NETLINK_TYPE_U32 }, [IFLA_MTU] = { .type = NETLINK_TYPE_U32 },
[IFLA_LINK] = { .type = NETLINK_TYPE_U32 }, [IFLA_LINK] = { .type = NETLINK_TYPE_U32 },
/* [IFLA_QDISC] = { .type = NETLINK_TYPE_STRING },
[IFLA_QDISC],
*/
[IFLA_STATS] = { .size = sizeof(struct rtnl_link_stats) }, [IFLA_STATS] = { .size = sizeof(struct rtnl_link_stats) },
/* /*
[IFLA_COST], [IFLA_COST],

View File

@ -125,6 +125,7 @@ typedef struct LinkInfo {
uint32_t max_mtu; uint32_t max_mtu;
uint32_t tx_queues; uint32_t tx_queues;
uint32_t rx_queues; uint32_t rx_queues;
char *qdisc;
char **alternative_names; char **alternative_names;
union { union {
@ -179,6 +180,7 @@ static const LinkInfo* link_info_array_free(LinkInfo *array) {
for (unsigned i = 0; array && array[i].needs_freeing; i++) { for (unsigned i = 0; array && array[i].needs_freeing; i++) {
sd_device_unref(array[i].sd_device); sd_device_unref(array[i].sd_device);
free(array[i].ssid); free(array[i].ssid);
free(array[i].qdisc);
strv_free(array[i].alternative_names); strv_free(array[i].alternative_names);
} }
@ -249,7 +251,7 @@ static int decode_netdev(sd_netlink_message *m, LinkInfo *info) {
static int decode_link(sd_netlink_message *m, LinkInfo *info, char **patterns, bool matched_patterns[]) { static int decode_link(sd_netlink_message *m, LinkInfo *info, char **patterns, bool matched_patterns[]) {
_cleanup_strv_free_ char **altnames = NULL; _cleanup_strv_free_ char **altnames = NULL;
const char *name; const char *name, *qdisc;
int ifindex, r; int ifindex, r;
uint16_t type; uint16_t type;
@ -333,6 +335,13 @@ static int decode_link(sd_netlink_message *m, LinkInfo *info, char **patterns, b
else if (sd_netlink_message_read(m, IFLA_STATS, sizeof info->stats, &info->stats) >= 0) else if (sd_netlink_message_read(m, IFLA_STATS, sizeof info->stats, &info->stats) >= 0)
info->has_stats = true; info->has_stats = true;
r = sd_netlink_message_read_string(m, IFLA_QDISC, &qdisc);
if (r >= 0) {
info->qdisc = strdup(qdisc);
if (!info->qdisc)
return log_oom();
}
/* fill kind info */ /* fill kind info */
(void) decode_netdev(m, info); (void) decode_netdev(m, info);
@ -1336,6 +1345,15 @@ static int link_status_one(
return table_log_add_error(r); return table_log_add_error(r);
} }
if (info->qdisc) {
r = table_add_many(table,
TABLE_EMPTY,
TABLE_STRING, "QDisc:",
TABLE_STRING, info->qdisc);
if (r < 0)
return table_log_add_error(r);
}
if (streq_ptr(info->netdev_kind, "bridge")) { if (streq_ptr(info->netdev_kind, "bridge")) {
r = table_add_many(table, r = table_add_many(table,
TABLE_EMPTY, TABLE_EMPTY,

View File

@ -6,6 +6,7 @@ systemd-analyze log-level debug
systemd-analyze log-target console systemd-analyze log-target console
systemctl start issue_14566_test systemctl start issue_14566_test
sleep 1
systemctl status issue_14566_test systemctl status issue_14566_test
leaked_pid=$(cat /leakedtestpid) leaked_pid=$(cat /leakedtestpid)