mirror of
https://github.com/systemd/systemd
synced 2025-09-26 23:34:44 +02:00
Compare commits
4 Commits
c6ef002b80
...
007cac09a2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
007cac09a2 | ||
![]() |
cdcb12cc1c | ||
![]() |
e056f9d2a3 | ||
![]() |
ad0d9c0109 |
@ -72,3 +72,7 @@ id-input:modalias:input:b0003v04B3p301Ee0100-e0,1,2,4*
|
|||||||
# Logitech Ultrathin Touch Mouse
|
# Logitech Ultrathin Touch Mouse
|
||||||
id-input:modalias:input:b0005v046DpB00De0700*
|
id-input:modalias:input:b0005v046DpB00De0700*
|
||||||
ID_INPUT_MOUSE=1
|
ID_INPUT_MOUSE=1
|
||||||
|
|
||||||
|
# Logitech MX Keys
|
||||||
|
id-input:modalias:input:b0003v046Dp408Ae0111*
|
||||||
|
ID_INPUT_MOUSE=0
|
||||||
|
@ -127,20 +127,20 @@ def property_grammar():
|
|||||||
('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER),
|
('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER),
|
||||||
('MOUSE_WHEEL_CLICK_COUNT', INTEGER),
|
('MOUSE_WHEEL_CLICK_COUNT', INTEGER),
|
||||||
('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER),
|
('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER),
|
||||||
('ID_AUTOSUSPEND', Literal('1')),
|
('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT', Literal('1')),
|
('ID_INPUT', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_ACCELEROMETER', Literal('1')),
|
('ID_INPUT_ACCELEROMETER', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_JOYSTICK', Literal('1')),
|
('ID_INPUT_JOYSTICK', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_KEY', Literal('1')),
|
('ID_INPUT_KEY', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_KEYBOARD', Literal('1')),
|
('ID_INPUT_KEYBOARD', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_MOUSE', Literal('1')),
|
('ID_INPUT_MOUSE', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_POINTINGSTICK', Literal('1')),
|
('ID_INPUT_POINTINGSTICK', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_SWITCH', Literal('1')),
|
('ID_INPUT_SWITCH', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_TABLET', Literal('1')),
|
('ID_INPUT_TABLET', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_TABLET_PAD', Literal('1')),
|
('ID_INPUT_TABLET_PAD', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_TOUCHPAD', Literal('1')),
|
('ID_INPUT_TOUCHPAD', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_TOUCHSCREEN', Literal('1')),
|
('ID_INPUT_TOUCHSCREEN', Or((Literal('0'), Literal('1')))),
|
||||||
('ID_INPUT_TRACKBALL', Literal('1')),
|
('ID_INPUT_TRACKBALL', Or((Literal('0'), Literal('1')))),
|
||||||
('POINTINGSTICK_SENSITIVITY', INTEGER),
|
('POINTINGSTICK_SENSITIVITY', INTEGER),
|
||||||
('POINTINGSTICK_CONST_ACCEL', REAL),
|
('POINTINGSTICK_CONST_ACCEL', REAL),
|
||||||
('ID_INPUT_JOYSTICK_INTEGRATION', Or(('internal', 'external'))),
|
('ID_INPUT_JOYSTICK_INTEGRATION', Or(('internal', 'external'))),
|
||||||
|
@ -1482,6 +1482,14 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
|
|||||||
service type to CS6 (network control) or CS4 (Realtime). Defaults to CS6.</para>
|
service type to CS6 (network control) or CS4 (Realtime). Defaults to CS6.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>TCPAdvertisedMaximumSegmentSize=</varname></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Specifies the Path MSS (in bytes) hints given on TCP layer. The usual suffixes K, M, G, are
|
||||||
|
supported and are understood to the base of 1024. An unsigned integer in the range 1–4294967294.
|
||||||
|
When unset, the kernel's default will be used.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>MultiPathRoute=<replaceable>address</replaceable>[@<replaceable>name</replaceable>] [<replaceable>weight</replaceable>]</varname></term>
|
<term><varname>MultiPathRoute=<replaceable>address</replaceable>[@<replaceable>name</replaceable>] [<replaceable>weight</replaceable>]</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
@ -179,6 +179,7 @@ Route.Protocol, config_parse_route_protocol,
|
|||||||
Route.Type, config_parse_route_type, 0, 0
|
Route.Type, config_parse_route_type, 0, 0
|
||||||
Route.InitialCongestionWindow, config_parse_tcp_window, 0, 0
|
Route.InitialCongestionWindow, config_parse_tcp_window, 0, 0
|
||||||
Route.InitialAdvertisedReceiveWindow, config_parse_tcp_window, 0, 0
|
Route.InitialAdvertisedReceiveWindow, config_parse_tcp_window, 0, 0
|
||||||
|
Route.TCPAdvertisedMaximumSegmentSize, config_parse_tcp_advmss, 0, 0
|
||||||
Route.QuickAck, config_parse_route_boolean, 0, 0
|
Route.QuickAck, config_parse_route_boolean, 0, 0
|
||||||
Route.FastOpenNoCookie, config_parse_route_boolean, 0, 0
|
Route.FastOpenNoCookie, config_parse_route_boolean, 0, 0
|
||||||
Route.TTLPropagate, config_parse_route_boolean, 0, 0
|
Route.TTLPropagate, config_parse_route_boolean, 0, 0
|
||||||
|
@ -310,6 +310,8 @@ void route_hash_func(const Route *route, struct siphash *state) {
|
|||||||
siphash24_compress(&route->initcwnd, sizeof(route->initcwnd), state);
|
siphash24_compress(&route->initcwnd, sizeof(route->initcwnd), state);
|
||||||
siphash24_compress(&route->initrwnd, sizeof(route->initrwnd), state);
|
siphash24_compress(&route->initrwnd, sizeof(route->initrwnd), state);
|
||||||
|
|
||||||
|
siphash24_compress(&route->advmss, sizeof(route->advmss), state);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* treat any other address family as AF_UNSPEC */
|
/* treat any other address family as AF_UNSPEC */
|
||||||
@ -393,6 +395,10 @@ int route_compare_func(const Route *a, const Route *b) {
|
|||||||
if (r != 0)
|
if (r != 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
r = CMP(a->advmss, b->advmss);
|
||||||
|
if (r != 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
default:
|
default:
|
||||||
/* treat any other address family as AF_UNSPEC */
|
/* treat any other address family as AF_UNSPEC */
|
||||||
@ -475,6 +481,7 @@ static void route_copy(Route *dest, const Route *src, const MultipathRoute *m) {
|
|||||||
dest->initcwnd = src->initcwnd;
|
dest->initcwnd = src->initcwnd;
|
||||||
dest->initrwnd = src->initrwnd;
|
dest->initrwnd = src->initrwnd;
|
||||||
dest->lifetime = src->lifetime;
|
dest->lifetime = src->lifetime;
|
||||||
|
dest->advmss= src->advmss;
|
||||||
|
|
||||||
if (m) {
|
if (m) {
|
||||||
dest->gw_family = m->gateway.family;
|
dest->gw_family = m->gateway.family;
|
||||||
@ -1122,6 +1129,12 @@ int route_configure(
|
|||||||
return log_link_error_errno(link, r, "Could not append RTAX_FASTOPEN_NO_COOKIE attribute: %m");
|
return log_link_error_errno(link, r, "Could not append RTAX_FASTOPEN_NO_COOKIE attribute: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (route->advmss > 0) {
|
||||||
|
r = sd_netlink_message_append_u32(req, RTAX_ADVMSS, route->advmss);
|
||||||
|
if (r < 0)
|
||||||
|
return log_link_error_errno(link, r, "Could not append RTAX_ADVMSS attribute: %m");
|
||||||
|
}
|
||||||
|
|
||||||
r = sd_netlink_message_close_container(req);
|
r = sd_netlink_message_close_container(req);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "Could not append RTA_METRICS attribute: %m");
|
return log_link_error_errno(link, r, "Could not append RTA_METRICS attribute: %m");
|
||||||
@ -2074,6 +2087,62 @@ int config_parse_route_type(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int config_parse_tcp_advmss(
|
||||||
|
const char *unit,
|
||||||
|
const char *filename,
|
||||||
|
unsigned line,
|
||||||
|
const char *section,
|
||||||
|
unsigned section_line,
|
||||||
|
const char *lvalue,
|
||||||
|
int ltype,
|
||||||
|
const char *rvalue,
|
||||||
|
void *data,
|
||||||
|
void *userdata) {
|
||||||
|
|
||||||
|
_cleanup_(route_free_or_set_invalidp) Route *n = NULL;
|
||||||
|
Network *network = userdata;
|
||||||
|
uint64_t u;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert(filename);
|
||||||
|
assert(section);
|
||||||
|
assert(lvalue);
|
||||||
|
assert(rvalue);
|
||||||
|
assert(data);
|
||||||
|
|
||||||
|
r = route_new_static(network, filename, section_line, &n);
|
||||||
|
if (r == -ENOMEM)
|
||||||
|
return log_oom();
|
||||||
|
if (r < 0) {
|
||||||
|
log_syntax(unit, LOG_WARNING, filename, line, r,
|
||||||
|
"Failed to allocate route, ignoring assignment: %m");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isempty(rvalue)) {
|
||||||
|
n->advmss = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = parse_size(rvalue, 1024, &u);
|
||||||
|
if (r < 0) {
|
||||||
|
log_syntax(unit, LOG_WARNING, filename, line, r,
|
||||||
|
"Could not parse TCPAdvertisedMaximumSegmentSize= \"%s\", ignoring assignment: %m", rvalue);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (u == 0 || u > UINT32_MAX) {
|
||||||
|
log_syntax(unit, LOG_WARNING, filename, line, 0,
|
||||||
|
"Invalid TCPAdvertisedMaximumSegmentSize= \"%s\", ignoring assignment: %m", rvalue);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
n->advmss = u;
|
||||||
|
|
||||||
|
TAKE_PTR(n);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int config_parse_tcp_window(
|
int config_parse_tcp_window(
|
||||||
const char *unit,
|
const char *unit,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
|
@ -40,6 +40,7 @@ typedef struct Route {
|
|||||||
uint32_t mtu;
|
uint32_t mtu;
|
||||||
uint32_t initcwnd;
|
uint32_t initcwnd;
|
||||||
uint32_t initrwnd;
|
uint32_t initrwnd;
|
||||||
|
uint32_t advmss;
|
||||||
unsigned char pref;
|
unsigned char pref;
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
int gateway_onlink;
|
int gateway_onlink;
|
||||||
@ -98,3 +99,4 @@ CONFIG_PARSER_PROTOTYPE(config_parse_route_type);
|
|||||||
CONFIG_PARSER_PROTOTYPE(config_parse_tcp_window);
|
CONFIG_PARSER_PROTOTYPE(config_parse_tcp_window);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_route_mtu);
|
CONFIG_PARSER_PROTOTYPE(config_parse_route_mtu);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_multipath_route);
|
CONFIG_PARSER_PROTOTYPE(config_parse_multipath_route);
|
||||||
|
CONFIG_PARSER_PROTOTYPE(config_parse_tcp_advmss);
|
||||||
|
@ -163,6 +163,7 @@ Source=
|
|||||||
Metric=
|
Metric=
|
||||||
TTLPropagate=
|
TTLPropagate=
|
||||||
MultiPathRoute=
|
MultiPathRoute=
|
||||||
|
TCPAdvertisedMaximumSegmentSize=
|
||||||
[Network]
|
[Network]
|
||||||
IPv6DuplicateAddressDetection=
|
IPv6DuplicateAddressDetection=
|
||||||
IPMasquerade=
|
IPMasquerade=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user