Compare commits
13 Commits
e6ce785d61
...
b9cbb08e0a
Author | SHA1 | Date |
---|---|---|
![]() |
b9cbb08e0a | |
![]() |
d407638382 | |
![]() |
07e4a8dc23 | |
![]() |
478f5aac07 | |
![]() |
1598b07da3 | |
![]() |
485a9202ba | |
![]() |
905a03e71d | |
![]() |
de70ff66dc | |
![]() |
dbc29e9175 | |
![]() |
7ad41997d1 | |
![]() |
e375ceb640 | |
![]() |
2e5811521d | |
![]() |
e318c2a444 |
9
NEWS
9
NEWS
|
@ -457,9 +457,7 @@ CHANGES WITH 247 in spe:
|
||||||
discipline in the [FlowQueuePIE] sections.
|
discipline in the [FlowQueuePIE] sections.
|
||||||
|
|
||||||
* systemd-networkd's .netdev files may now be used to create "BareUDP"
|
* systemd-networkd's .netdev files may now be used to create "BareUDP"
|
||||||
tunnels, configured in the new [BareUDP] setting. VXLAN tunnels may
|
tunnels, configured in the new [BareUDP] setting.
|
||||||
now be marked to be independent of any underlying network interface
|
|
||||||
via the new Independent= boolean setting.
|
|
||||||
|
|
||||||
* systemd-networkd's Gateway= setting in .network files now accepts the
|
* systemd-networkd's Gateway= setting in .network files now accepts the
|
||||||
special values "_dhcp4" and "_ipv6ra" to configure additional,
|
special values "_dhcp4" and "_ipv6ra" to configure additional,
|
||||||
|
@ -482,9 +480,8 @@ CHANGES WITH 247 in spe:
|
||||||
prefix will be announced through IPv6 router advertisement (IPv6 RA).
|
prefix will be announced through IPv6 router advertisement (IPv6 RA).
|
||||||
The setting is enabled by default.
|
The setting is enabled by default.
|
||||||
|
|
||||||
* systemd-networkd's .netdev files gained the Independent= boolean
|
* VXLAN tunnels may now be marked as independent of any underlying
|
||||||
setting in [VXLAN] section. When enabled, the vxlan interface will be
|
network interface via the new Independent= boolean setting.
|
||||||
created without underlying interfaces. Defaults to false.
|
|
||||||
|
|
||||||
* systemctl gained support for two new verbs: "service-log-level" and
|
* systemctl gained support for two new verbs: "service-log-level" and
|
||||||
"service-log-target" may be used on services that implement the
|
"service-log-target" may be used on services that implement the
|
||||||
|
|
|
@ -373,7 +373,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:*
|
||||||
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:*
|
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:*
|
||||||
# Dell Precision microphone mute
|
# Dell Precision microphone mute
|
||||||
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:*
|
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:*
|
||||||
KEYBOARD_KEY_100150=f20 # Mic mute toggle, should be micmute
|
KEYBOARD_KEY_100150=f20 # Mic mute toggle, should be micmute
|
||||||
|
|
||||||
# Dell Latitude privacy microphone mute
|
# Dell Latitude privacy microphone mute
|
||||||
evdev:name:Dell Privacy Driver:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:sku0A3E:*
|
evdev:name:Dell Privacy Driver:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:sku0A3E:*
|
||||||
|
@ -488,7 +488,7 @@ evdev:input:b0003v0458p0708*
|
||||||
###########################################################
|
###########################################################
|
||||||
|
|
||||||
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pn*:*
|
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pn*:*
|
||||||
KEYBOARD_KEY_8=unknown # Use hp-wireless instead
|
KEYBOARD_KEY_8=unknown # Use hp-wireless instead
|
||||||
|
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*:*
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*:*
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pn*:*
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pn*:*
|
||||||
|
@ -863,7 +863,7 @@ evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO:pn81Q7*:pvrLenovoYogaS940:*
|
||||||
|
|
||||||
# Lenovo Y50-70
|
# Lenovo Y50-70
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO*:pn*20378*:*
|
evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO*:pn*20378*:*
|
||||||
KEYBOARD_KEY_f3=f21 # Fn+F6 (toggle touchpad)
|
KEYBOARD_KEY_f3=f21 # Fn+F6 (toggle touchpad)
|
||||||
|
|
||||||
# V480
|
# V480
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*Lenovo*V480*:*
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*Lenovo*V480*:*
|
||||||
|
@ -894,54 +894,54 @@ evdev:input:b0003v04B3p301B*
|
||||||
# logitech custom consumer usage-page codes. The mappings below are the most
|
# logitech custom consumer usage-page codes. The mappings below are the most
|
||||||
# common, but some mapping may differ, especially the Fn F1-F12 mappings
|
# common, but some mapping may differ, especially the Fn F1-F12 mappings
|
||||||
evdev:input:b0003v046Dp00*
|
evdev:input:b0003v046Dp00*
|
||||||
KEYBOARD_KEY_c0183=media # HUT:config, kbd:Media/Music player button
|
KEYBOARD_KEY_c0183=media # HUT:config, kbd:Media/Music player button
|
||||||
KEYBOARD_KEY_c1001=chat # Messenger button
|
KEYBOARD_KEY_c1001=chat # Messenger button
|
||||||
KEYBOARD_KEY_c1002=camera # Webcam button
|
KEYBOARD_KEY_c1002=camera # Webcam button
|
||||||
KEYBOARD_KEY_c1003=audio # Music Browser button
|
KEYBOARD_KEY_c1003=audio # Music Browser button
|
||||||
KEYBOARD_KEY_c1004=video # Video Browser button
|
KEYBOARD_KEY_c1004=video # Video Browser button
|
||||||
KEYBOARD_KEY_c1005=images # Image Browser button
|
KEYBOARD_KEY_c1005=images # Image Browser button
|
||||||
KEYBOARD_KEY_c100a=documents # Document Browser button
|
KEYBOARD_KEY_c100a=documents # Document Browser button
|
||||||
KEYBOARD_KEY_c100b=rewind # Rewind button
|
KEYBOARD_KEY_c100b=rewind # Rewind button
|
||||||
KEYBOARD_KEY_c100c=fastforward # Fast Forward button
|
KEYBOARD_KEY_c100c=fastforward # Fast Forward button
|
||||||
KEYBOARD_KEY_c100f=f14 # Track 1 button → f14 → XF86Launch5
|
KEYBOARD_KEY_c100f=f14 # Track 1 button → f14 → XF86Launch5
|
||||||
KEYBOARD_KEY_c1010=f15 # Track 2 button → f15 → XF86Launch6
|
KEYBOARD_KEY_c1010=f15 # Track 2 button → f15 → XF86Launch6
|
||||||
KEYBOARD_KEY_c1011=channeldown # Playlist back button
|
KEYBOARD_KEY_c1011=channeldown # Playlist back button
|
||||||
KEYBOARD_KEY_c1012=channelup # Playlist advance button
|
KEYBOARD_KEY_c1012=channelup # Playlist advance button
|
||||||
KEYBOARD_KEY_c1013=camera # Webcam button
|
KEYBOARD_KEY_c1013=camera # Webcam button
|
||||||
KEYBOARD_KEY_c1014=coffee # Status button
|
KEYBOARD_KEY_c1014=coffee # Status button
|
||||||
KEYBOARD_KEY_c1015=record # Record symbol button
|
KEYBOARD_KEY_c1015=record # Record symbol button
|
||||||
KEYBOARD_KEY_c1016=sound # Flame/CD burning → sound → XF86AudioPreset
|
KEYBOARD_KEY_c1016=sound # Flame/CD burning → sound → XF86AudioPreset
|
||||||
KEYBOARD_KEY_c1017=ejectcd # Eject button
|
KEYBOARD_KEY_c1017=ejectcd # Eject button
|
||||||
KEYBOARD_KEY_c1018=config # Remote-control ico
|
KEYBOARD_KEY_c1018=config # Remote-control ico
|
||||||
KEYBOARD_KEY_c1019=f14 # Preset 1 → f14 → XF86Launch5
|
KEYBOARD_KEY_c1019=f14 # Preset 1 → f14 → XF86Launch5
|
||||||
KEYBOARD_KEY_c101a=f15 # Preset 2 → f15 → XF86Launch6
|
KEYBOARD_KEY_c101a=f15 # Preset 2 → f15 → XF86Launch6
|
||||||
KEYBOARD_KEY_c101b=f16 # Preset 3 → f16 → XF86Launch7
|
KEYBOARD_KEY_c101b=f16 # Preset 3 → f16 → XF86Launch7
|
||||||
KEYBOARD_KEY_c101c=cyclewindows # 2 overlapping windows icon
|
KEYBOARD_KEY_c101c=cyclewindows # 2 overlapping windows icon
|
||||||
KEYBOARD_KEY_c101f=zoomout # zoom - button / - side of zoomrocker
|
KEYBOARD_KEY_c101f=zoomout # zoom - button / - side of zoomrocker
|
||||||
KEYBOARD_KEY_c1020=zoomin # zoom + button / + side off zoom rocker
|
KEYBOARD_KEY_c1020=zoomin # zoom + button / + side off zoom rocker
|
||||||
KEYBOARD_KEY_c1021=zoomreset # 100% symbol on kbd left side
|
KEYBOARD_KEY_c1021=zoomreset # 100% symbol on kbd left side
|
||||||
KEYBOARD_KEY_c1023=close # [x] symbol on kbd left side
|
KEYBOARD_KEY_c1023=close # [x] symbol on kbd left side
|
||||||
KEYBOARD_KEY_c1027=menu # Hamburger menu icon
|
KEYBOARD_KEY_c1027=menu # Hamburger menu icon
|
||||||
KEYBOARD_KEY_c1028=angle # Rotate button
|
KEYBOARD_KEY_c1028=angle # Rotate button
|
||||||
KEYBOARD_KEY_c1029=shuffle # Shuffle button
|
KEYBOARD_KEY_c1029=shuffle # Shuffle button
|
||||||
KEYBOARD_KEY_c102a=back # Back button
|
KEYBOARD_KEY_c102a=back # Back button
|
||||||
KEYBOARD_KEY_c102b=cyclewindows # Empty window icon
|
KEYBOARD_KEY_c102b=cyclewindows # Empty window icon
|
||||||
KEYBOARD_KEY_c102c=fn # Fn key
|
KEYBOARD_KEY_c102c=fn # Fn key
|
||||||
KEYBOARD_KEY_c102d=www # www text + magnifierglass icon
|
KEYBOARD_KEY_c102d=www # www text + magnifierglass icon
|
||||||
KEYBOARD_KEY_c1031=connect # Pickup phone button → connect → XF86Go
|
KEYBOARD_KEY_c1031=connect # Pickup phone button → connect → XF86Go
|
||||||
KEYBOARD_KEY_c1032=cancel # Hangup phone button → cancel → Cancel
|
KEYBOARD_KEY_c1032=cancel # Hangup phone button → cancel → Cancel
|
||||||
KEYBOARD_KEY_c1041=help # Help text or icon (Fn + F1)
|
KEYBOARD_KEY_c1041=help # Help text or icon (Fn + F1)
|
||||||
KEYBOARD_KEY_c1042=wordprocessor # Word icon (Fn + F2)
|
KEYBOARD_KEY_c1042=wordprocessor # Word icon (Fn + F2)
|
||||||
KEYBOARD_KEY_c1043=spreadsheet # Excel icon (Fn + F3)
|
KEYBOARD_KEY_c1043=spreadsheet # Excel icon (Fn + F3)
|
||||||
KEYBOARD_KEY_c1044=presentation # Presentation icon (Fn + F4)
|
KEYBOARD_KEY_c1044=presentation # Presentation icon (Fn + F4)
|
||||||
KEYBOARD_KEY_c1045=undo # Undo Icon (Fn + F5)
|
KEYBOARD_KEY_c1045=undo # Undo Icon (Fn + F5)
|
||||||
KEYBOARD_KEY_c1046=redo # Redo Icon (Fn + F6)
|
KEYBOARD_KEY_c1046=redo # Redo Icon (Fn + F6)
|
||||||
KEYBOARD_KEY_c1047=print # Printer Icon (Fn + F7)
|
KEYBOARD_KEY_c1047=print # Printer Icon (Fn + F7)
|
||||||
KEYBOARD_KEY_c1048=save # Floppy Icon (Fn + F8)
|
KEYBOARD_KEY_c1048=save # Floppy Icon (Fn + F8)
|
||||||
KEYBOARD_KEY_c1049=prog1 # Smartkey A (Fn + F9) → XF86Launch1
|
KEYBOARD_KEY_c1049=prog1 # Smartkey A (Fn + F9) → XF86Launch1
|
||||||
KEYBOARD_KEY_c104a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
|
KEYBOARD_KEY_c104a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
|
||||||
KEYBOARD_KEY_c104b=prog3 # Smartkey C (Fn + F11) → XF86Launch3
|
KEYBOARD_KEY_c104b=prog3 # Smartkey C (Fn + F11) → XF86Launch3
|
||||||
KEYBOARD_KEY_c104c=prog4 # Smartkey D (Fn + F12) → XF86Launch4
|
KEYBOARD_KEY_c104c=prog4 # Smartkey D (Fn + F12) → XF86Launch4
|
||||||
|
|
||||||
# Cordless Access Keyboard (27 MHz, modelnumber Y-RH35)
|
# Cordless Access Keyboard (27 MHz, modelnumber Y-RH35)
|
||||||
evdev:input:b0003v046Dp0042*
|
evdev:input:b0003v046Dp0042*
|
||||||
|
@ -971,7 +971,7 @@ evdev:input:b0003v046Dp0045*
|
||||||
|
|
||||||
# S510 keyboard (27 MHz, modelnumber Y-RAK73)
|
# S510 keyboard (27 MHz, modelnumber Y-RAK73)
|
||||||
evdev:input:b0003v046Dp0056*
|
evdev:input:b0003v046Dp0056*
|
||||||
KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
|
KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
|
||||||
|
|
||||||
# MX3000 keyboard (27 MHz, modelnumber Y-RAM74)
|
# MX3000 keyboard (27 MHz, modelnumber Y-RAM74)
|
||||||
# We ignore the scroll up / down keypress events since these buttons also
|
# We ignore the scroll up / down keypress events since these buttons also
|
||||||
|
@ -980,7 +980,7 @@ evdev:input:b0003v046Dp0056*
|
||||||
# cleared then the scroll-wheel events for these buttons go away and then
|
# cleared then the scroll-wheel events for these buttons go away and then
|
||||||
# tilting the scrollwheel left/right starts sending c1022 / c1024 events
|
# tilting the scrollwheel left/right starts sending c1022 / c1024 events
|
||||||
evdev:input:b0003v046Dp0057*
|
evdev:input:b0003v046Dp0057*
|
||||||
KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
|
KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
|
||||||
|
|
||||||
#KEYBOARD_KEY_c101d=scrolldown # Button below scrollwheel (see note above)
|
#KEYBOARD_KEY_c101d=scrolldown # Button below scrollwheel (see note above)
|
||||||
#KEYBOARD_KEY_c101e=scrollup # Button above scrollwheel (see note above)
|
#KEYBOARD_KEY_c101e=scrollup # Button above scrollwheel (see note above)
|
||||||
|
@ -989,82 +989,82 @@ evdev:input:b0003v046Dp0057*
|
||||||
|
|
||||||
# MX3200 keyboard (27 MHz, modelnumber Y-RAV80)
|
# MX3200 keyboard (27 MHz, modelnumber Y-RAV80)
|
||||||
evdev:input:b0003v046Dp005C*
|
evdev:input:b0003v046Dp005C*
|
||||||
KEYBOARD_KEY_c1001=phone # VOIP button
|
KEYBOARD_KEY_c1001=phone # VOIP button
|
||||||
KEYBOARD_KEY_c1016=record # Record button
|
KEYBOARD_KEY_c1016=record # Record button
|
||||||
KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
|
KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
|
||||||
KEYBOARD_KEY_c1042=spreadsheet # Excel icon (Fn + F2)
|
KEYBOARD_KEY_c1042=spreadsheet # Excel icon (Fn + F2)
|
||||||
KEYBOARD_KEY_c1043=calendar # Calendar icon (Fn + F3)
|
KEYBOARD_KEY_c1043=calendar # Calendar icon (Fn + F3)
|
||||||
KEYBOARD_KEY_c1044=documents # My Documents icon (Fn + F4)
|
KEYBOARD_KEY_c1044=documents # My Documents icon (Fn + F4)
|
||||||
KEYBOARD_KEY_c1045=prog1 # Smartkey A (Fn + F5) → XF86Launch1
|
KEYBOARD_KEY_c1045=prog1 # Smartkey A (Fn + F5) → XF86Launch1
|
||||||
KEYBOARD_KEY_c1046=prog2 # Smartkey B (Fn + F6) → XF86Launch2
|
KEYBOARD_KEY_c1046=prog2 # Smartkey B (Fn + F6) → XF86Launch2
|
||||||
KEYBOARD_KEY_c1047=prog3 # Smartkey C (Fn + F7) → XF86Launch3
|
KEYBOARD_KEY_c1047=prog3 # Smartkey C (Fn + F7) → XF86Launch3
|
||||||
KEYBOARD_KEY_c1048=prog4 # Smartkey D (Fn + F8) → XF86Launch4
|
KEYBOARD_KEY_c1048=prog4 # Smartkey D (Fn + F8) → XF86Launch4
|
||||||
|
|
||||||
# EX100 keyboard (27 MHz, modelnumber Y-RBH94)
|
# EX100 keyboard (27 MHz, modelnumber Y-RBH94)
|
||||||
evdev:input:b0003v046Dp0065*
|
evdev:input:b0003v046Dp0065*
|
||||||
KEYBOARD_KEY_c104b=battery # Battery icon (Fn + F11)
|
KEYBOARD_KEY_c104b=battery # Battery icon (Fn + F11)
|
||||||
KEYBOARD_KEY_c104c=ejectcd # Eject icon (Fn + F12)
|
KEYBOARD_KEY_c104c=ejectcd # Eject icon (Fn + F12)
|
||||||
|
|
||||||
# S520 keyboard (27 MHz, modelnumber Y-RBA97)
|
# S520 keyboard (27 MHz, modelnumber Y-RBA97)
|
||||||
# Note this one uses non-standard codes for FN + F9 - Fn + F12?
|
# Note this one uses non-standard codes for FN + F9 - Fn + F12?
|
||||||
evdev:input:b0003v046Dp0066*
|
evdev:input:b0003v046Dp0066*
|
||||||
KEYBOARD_KEY_c100e=prog4 # Smartkey D (Fn + F12) → XF86Launch4
|
KEYBOARD_KEY_c100e=prog4 # Smartkey D (Fn + F12) → XF86Launch4
|
||||||
KEYBOARD_KEY_c1019=prog1 # Smartkey A (Fn + F9) → XF86Launch1
|
KEYBOARD_KEY_c1019=prog1 # Smartkey A (Fn + F9) → XF86Launch1
|
||||||
KEYBOARD_KEY_c101a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
|
KEYBOARD_KEY_c101a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
|
||||||
KEYBOARD_KEY_c101b=prog3 # Smartkey C (Fn + F11) → XF86Launch3
|
KEYBOARD_KEY_c101b=prog3 # Smartkey C (Fn + F11) → XF86Launch3
|
||||||
KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
|
KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
|
||||||
KEYBOARD_KEY_c1042=spreadsheet # Excel icon (Fn + F2)
|
KEYBOARD_KEY_c1042=spreadsheet # Excel icon (Fn + F2)
|
||||||
KEYBOARD_KEY_c1043=presentation # Presentation icon (Fn + F3)
|
KEYBOARD_KEY_c1043=presentation # Presentation icon (Fn + F3)
|
||||||
KEYBOARD_KEY_c1044=calendar # Calendar icon (Fn + F4)
|
KEYBOARD_KEY_c1044=calendar # Calendar icon (Fn + F4)
|
||||||
KEYBOARD_KEY_c1045=homepage # Home icon (Fn + F5)
|
KEYBOARD_KEY_c1045=homepage # Home icon (Fn + F5)
|
||||||
KEYBOARD_KEY_c1046=email # Letter icon (Fn + F6)
|
KEYBOARD_KEY_c1046=email # Letter icon (Fn + F6)
|
||||||
KEYBOARD_KEY_c1047=search # Magnifying glass icon (Fn + F7)
|
KEYBOARD_KEY_c1047=search # Magnifying glass icon (Fn + F7)
|
||||||
KEYBOARD_KEY_c1048=config # Window with gear icon (Fn + F8)
|
KEYBOARD_KEY_c1048=config # Window with gear icon (Fn + F8)
|
||||||
KEYBOARD_KEY_c106f=battery # Battery icon
|
KEYBOARD_KEY_c106f=battery # Battery icon
|
||||||
|
|
||||||
# S510 remote control (27 MHz)
|
# S510 remote control (27 MHz)
|
||||||
evdev:input:b0003v046Dp00FE*
|
evdev:input:b0003v046Dp00FE*
|
||||||
KEYBOARD_KEY_c1018=media # Media button
|
KEYBOARD_KEY_c1018=media # Media button
|
||||||
|
|
||||||
# MX5000 keyboard (HID proxy mode and bluetooth matches)
|
# MX5000 keyboard (HID proxy mode and bluetooth matches)
|
||||||
evdev:input:b0003v046DpB305*
|
evdev:input:b0003v046DpB305*
|
||||||
evdev:input:b0005v046DpB305*
|
evdev:input:b0005v046DpB305*
|
||||||
KEYBOARD_KEY_c0183=media # HUT says config, kbd says Media
|
KEYBOARD_KEY_c0183=media # HUT says config, kbd says Media
|
||||||
KEYBOARD_KEY_c0230=zoomreset # HUT says fullscreen, kbd says 100%
|
KEYBOARD_KEY_c0230=zoomreset # HUT says fullscreen, kbd says 100%
|
||||||
KEYBOARD_KEY_c1004=send # Send and receive / sync button
|
KEYBOARD_KEY_c1004=send # Send and receive / sync button
|
||||||
KEYBOARD_KEY_c1006=coffee # Status (online/away) button
|
KEYBOARD_KEY_c1006=coffee # Status (online/away) button
|
||||||
KEYBOARD_KEY_c1007=camera # Webcam button
|
KEYBOARD_KEY_c1007=camera # Webcam button
|
||||||
KEYBOARD_KEY_c100c=kbd_lcd_menu1 # 1st button below the builtin LCD
|
KEYBOARD_KEY_c100c=kbd_lcd_menu1 # 1st button below the builtin LCD
|
||||||
KEYBOARD_KEY_c100d=kbd_lcd_menu4 # 4th button below the builtin LCD
|
KEYBOARD_KEY_c100d=kbd_lcd_menu4 # 4th button below the builtin LCD
|
||||||
KEYBOARD_KEY_c100e=kbd_lcd_menu2 # 2nd button below the builtin LCD
|
KEYBOARD_KEY_c100e=kbd_lcd_menu2 # 2nd button below the builtin LCD
|
||||||
KEYBOARD_KEY_c100f=kbd_lcd_menu3 # 3th button below the builtin LCD
|
KEYBOARD_KEY_c100f=kbd_lcd_menu3 # 3th button below the builtin LCD
|
||||||
KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
|
KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
|
||||||
KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
|
KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
|
||||||
KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
|
KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
|
||||||
KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
|
KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
|
||||||
KEYBOARD_KEY_c1040=fn_esc # Fn mode on/off toggle
|
KEYBOARD_KEY_c1040=fn_esc # Fn mode on/off toggle
|
||||||
|
|
||||||
# Dinovo Edge (HID proxy mode and bluetooth matches)
|
# Dinovo Edge (HID proxy mode and bluetooth matches)
|
||||||
evdev:input:b0003v046DpB309*
|
evdev:input:b0003v046DpB309*
|
||||||
evdev:input:b0005v046DpB309*
|
evdev:input:b0005v046DpB309*
|
||||||
KEYBOARD_KEY_c102c=fn # Fn key
|
KEYBOARD_KEY_c102c=fn # Fn key
|
||||||
KEYBOARD_KEY_c1038=prog1 # Fn + F9 Smartkey A → XF86Launch1
|
KEYBOARD_KEY_c1038=prog1 # Fn + F9 Smartkey A → XF86Launch1
|
||||||
KEYBOARD_KEY_c1039=prog2 # Fn + F10 Smartkey B → XF86Launch2
|
KEYBOARD_KEY_c1039=prog2 # Fn + F10 Smartkey B → XF86Launch2
|
||||||
KEYBOARD_KEY_c103a=prog3 # Fn + F11 Smartkey C → XF86Launch3
|
KEYBOARD_KEY_c103a=prog3 # Fn + F11 Smartkey C → XF86Launch3
|
||||||
KEYBOARD_KEY_c103b=prog4 # Fn + F12 Smartkey D → XF86Launch4
|
KEYBOARD_KEY_c103b=prog4 # Fn + F12 Smartkey D → XF86Launch4
|
||||||
KEYBOARD_KEY_c1050=phone # Fn + F1 Phone button
|
KEYBOARD_KEY_c1050=phone # Fn + F1 Phone button
|
||||||
|
|
||||||
# MX5500 keyboard (HID proxy mode and bluetooth matches)
|
# MX5500 keyboard (HID proxy mode and bluetooth matches)
|
||||||
evdev:input:b0003v046DpB30B*
|
evdev:input:b0003v046DpB30B*
|
||||||
evdev:input:b0005v046DpB30B*
|
evdev:input:b0005v046DpB30B*
|
||||||
KEYBOARD_KEY_c0183=media # HUT says consumer control configuration, kbd says Media Center
|
KEYBOARD_KEY_c0183=media # HUT says consumer control configuration, kbd says Media Center
|
||||||
KEYBOARD_KEY_c100e=images # Camera icon, "Photo Gallery"
|
KEYBOARD_KEY_c100e=images # Camera icon, "Photo Gallery"
|
||||||
KEYBOARD_KEY_c100f=config # Window with gear icon
|
KEYBOARD_KEY_c100f=config # Window with gear icon
|
||||||
KEYBOARD_KEY_c102c=fn # Fn key
|
KEYBOARD_KEY_c102c=fn # Fn key
|
||||||
KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
|
KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
|
||||||
KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
|
KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
|
||||||
KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
|
KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
|
||||||
KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
|
KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
|
||||||
|
|
||||||
# Logitech K811
|
# Logitech K811
|
||||||
evdev:input:b0005v046DpB317*
|
evdev:input:b0005v046DpB317*
|
||||||
|
@ -1143,22 +1143,22 @@ evdev:input:b0003v046DpC52D*
|
||||||
|
|
||||||
# Internet Navigator
|
# Internet Navigator
|
||||||
evdev:input:b0003v046DpC309*
|
evdev:input:b0003v046DpC309*
|
||||||
KEYBOARD_KEY_90001=chat # Messenger/SMS
|
KEYBOARD_KEY_90001=chat # Messenger/SMS
|
||||||
KEYBOARD_KEY_90002=camera # webcam
|
KEYBOARD_KEY_90002=camera # webcam
|
||||||
KEYBOARD_KEY_90003=prog1 # iTouch
|
KEYBOARD_KEY_90003=prog1 # iTouch
|
||||||
KEYBOARD_KEY_90004=shop # Shopping
|
KEYBOARD_KEY_90004=shop # Shopping
|
||||||
KEYBOARD_KEY_c0201=new # New (F1)
|
KEYBOARD_KEY_c0201=new # New (F1)
|
||||||
KEYBOARD_KEY_c0289=reply # Reply mail (F2)
|
KEYBOARD_KEY_c0289=reply # Reply mail (F2)
|
||||||
KEYBOARD_KEY_c028b=forwardmail # Forward mail (F3)
|
KEYBOARD_KEY_c028b=forwardmail # Forward mail (F3)
|
||||||
KEYBOARD_KEY_c028c=send # Send (F4)
|
KEYBOARD_KEY_c028c=send # Send (F4)
|
||||||
KEYBOARD_KEY_c021a=undo # Undo (F5)
|
KEYBOARD_KEY_c021a=undo # Undo (F5)
|
||||||
KEYBOARD_KEY_c0279=redo # Redo (F6)
|
KEYBOARD_KEY_c0279=redo # Redo (F6)
|
||||||
KEYBOARD_KEY_c0208=print # Print (F7)
|
KEYBOARD_KEY_c0208=print # Print (F7)
|
||||||
KEYBOARD_KEY_c0207=save # Save (F8)
|
KEYBOARD_KEY_c0207=save # Save (F8)
|
||||||
KEYBOARD_KEY_c0194=file # My Computer (F9)
|
KEYBOARD_KEY_c0194=file # My Computer (F9)
|
||||||
KEYBOARD_KEY_c01a7=documents # My Documents (F10)
|
KEYBOARD_KEY_c01a7=documents # My Documents (F10)
|
||||||
KEYBOARD_KEY_c01b6=images # My Pictures (F11)
|
KEYBOARD_KEY_c01b6=images # My Pictures (F11)
|
||||||
KEYBOARD_KEY_c01b7=audio # My Music (F12)
|
KEYBOARD_KEY_c01b7=audio # My Music (F12)
|
||||||
|
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
|
@ -1400,25 +1400,25 @@ evdev:input:b0003v05A4p9735*
|
||||||
KEYBOARD_KEY_c000c=stop
|
KEYBOARD_KEY_c000c=stop
|
||||||
KEYBOARD_KEY_c0018=refresh
|
KEYBOARD_KEY_c0018=refresh
|
||||||
KEYBOARD_KEY_c00b9=search
|
KEYBOARD_KEY_c00b9=search
|
||||||
KEYBOARD_KEY_c0006=bookmarks # Button labeled "Favorites"
|
KEYBOARD_KEY_c0006=bookmarks # Button labeled "Favorites"
|
||||||
KEYBOARD_KEY_c00a8=homepage # Button labeled "Web/Home"
|
KEYBOARD_KEY_c00a8=homepage # Button labeled "Web/Home"
|
||||||
KEYBOARD_KEY_c0010=mute
|
KEYBOARD_KEY_c0010=mute
|
||||||
KEYBOARD_KEY_c0011=volumedown
|
KEYBOARD_KEY_c0011=volumedown
|
||||||
KEYBOARD_KEY_c0014=volumeup
|
KEYBOARD_KEY_c0014=volumeup
|
||||||
KEYBOARD_KEY_c000e=close
|
KEYBOARD_KEY_c000e=close
|
||||||
KEYBOARD_KEY_c00a7=print
|
KEYBOARD_KEY_c00a7=print
|
||||||
KEYBOARD_KEY_c0013=documents # Button labeled "Stickies"
|
KEYBOARD_KEY_c0013=documents # Button labeled "Stickies"
|
||||||
KEYBOARD_KEY_c000d=find # Button labeled "Sherlock2"
|
KEYBOARD_KEY_c000d=find # Button labeled "Sherlock2"
|
||||||
KEYBOARD_KEY_c000f=mail
|
KEYBOARD_KEY_c000f=mail
|
||||||
KEYBOARD_KEY_c000a=calc
|
KEYBOARD_KEY_c000a=calc
|
||||||
KEYBOARD_KEY_c000b=sleep
|
KEYBOARD_KEY_c000b=sleep
|
||||||
KEYBOARD_KEY_c0007=previoussong # Button with standard |<< icon
|
KEYBOARD_KEY_c0007=previoussong # Button with standard |<< icon
|
||||||
KEYBOARD_KEY_c0008=playpause # Button with standad >/|| icon
|
KEYBOARD_KEY_c0008=playpause # Button with standad >/|| icon
|
||||||
KEYBOARD_KEY_c0009=nextsong # Button with standard >>| icon
|
KEYBOARD_KEY_c0009=nextsong # Button with standard >>| icon
|
||||||
KEYBOARD_KEY_c00b2=stopcd # Button with standard square box icon
|
KEYBOARD_KEY_c00b2=stopcd # Button with standard square box icon
|
||||||
KEYBOARD_KEY_c0016=prog1 # Key labeled "pf1"
|
KEYBOARD_KEY_c0016=prog1 # Key labeled "pf1"
|
||||||
KEYBOARD_KEY_c00bb=prog2 # Key labeled "pf2"
|
KEYBOARD_KEY_c00bb=prog2 # Key labeled "pf2"
|
||||||
KEYBOARD_KEY_c00b8=prog3 # Key labeled "pf3"
|
KEYBOARD_KEY_c00b8=prog3 # Key labeled "pf3"
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
# Pine64
|
# Pine64
|
||||||
|
@ -1436,7 +1436,7 @@ evdev:input:b0003v258Ap001E*
|
||||||
|
|
||||||
# Plantronics .Audio 626 DSP
|
# Plantronics .Audio 626 DSP
|
||||||
evdev:input:b0003v047FpC006*
|
evdev:input:b0003v047FpC006*
|
||||||
KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute
|
KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
# Purism
|
# Purism
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
</row></thead>
|
</row></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<row><entry><varname>bond</varname></entry>
|
<row><entry><varname>bond</varname></entry>
|
||||||
<entry>A bond device is an aggregation of all its slave devices. See <ulink url="https://www.kernel.org/doc/Documentation/networking/bonding.txt">Linux Ethernet Bonding Driver HOWTO</ulink> for details.Local configuration</entry></row>
|
<entry>A bond device is an aggregation of all its slave devices. See <ulink url="https://www.kernel.org/doc/Documentation/networking/bonding.txt">Linux Ethernet Bonding Driver HOWTO</ulink> for details.</entry></row>
|
||||||
|
|
||||||
<row><entry><varname>bridge</varname></entry>
|
<row><entry><varname>bridge</varname></entry>
|
||||||
<entry>A bridge device is a software switch, and each of its slave devices and the bridge itself are ports of the switch.</entry></row>
|
<entry>A bridge device is a software switch, and each of its slave devices and the bridge itself are ports of the switch.</entry></row>
|
||||||
|
@ -754,7 +754,8 @@
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>Id=</varname></term>
|
<term><varname>Id=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Specifies the Virtual Network Identifier (VNI) to use. Ranges [0-16777215]. This field is mandatory.</para>
|
<para>Specifies the Virtual Network Identifier (VNI) to use, a number between 0 and 16777215. This
|
||||||
|
field is mandatory.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
@ -766,7 +767,7 @@
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>TOS=</varname></term>
|
<term><varname>TOS=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Specifies the TOS value to use in outgoing packets. Ranges [1-255].</para>
|
<para>Specifies the TOS value to use in outgoing packets. Takes a number between 1 and 255.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
@ -818,8 +819,9 @@
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>Independent=</varname></term>
|
<term><varname>Independent=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Takes a boolean. When true, the vxlan interface is created without underlying interfaces.
|
<para>Takes a boolean. When true, the vxlan interface is created without any underlying network
|
||||||
Defaults to <literal>false</literal>.</para>
|
interface. Defaults to false, which means that a .network file that requests this tunnel using
|
||||||
|
<varname>Tunnel=</varname> is required for the tunnel to be created.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
@ -1276,9 +1278,10 @@
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>Independent=</varname></term>
|
<term><varname>Independent=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Takes a boolean. When true tunnel does not require .network file. Created as "tunnel@NONE".
|
<para>Takes a boolean. When false (the default), the tunnel is always created over some network
|
||||||
Defaults to <literal>false</literal>.
|
device, and a .network file that requests this tunnel using <varname>Tunnel=</varname> is required
|
||||||
</para>
|
for the tunnel to be created. When true, the tunnel is created independently of any network as
|
||||||
|
"tunnel@NONE".</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
@ -1770,8 +1773,8 @@
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>AdActorSystem=</varname></term>
|
<term><varname>AdActorSystem=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Specifies the 802.3ad system mac address. This can not be either
|
<para>Specifies the 802.3ad system MAC address. This cannot be a null or multicast address.
|
||||||
<constant>NULL</constant> or <constant>Multicast</constant>.</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
@ -1948,10 +1951,8 @@
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>Independent=</varname></term>
|
<term><varname>Independent=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Takes a boolean. If set to <literal>no</literal>, the xfrm interface should have an
|
<para>Takes a boolean. If false (the default), the xfrm interface must have an underlying device
|
||||||
underlying device which can be used for hardware offloading. Defaults to <literal>no</literal>.
|
which can be used for hardware offloading.</para>
|
||||||
See <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
|
||||||
for how to configure the underlying device.</para>
|
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
|
@ -1594,6 +1594,7 @@ generate_gperfs = find_program('tools/generate-gperfs.py')
|
||||||
|
|
||||||
subdir('po')
|
subdir('po')
|
||||||
subdir('catalog')
|
subdir('catalog')
|
||||||
|
subdir('src/libudev')
|
||||||
subdir('src/systemd')
|
subdir('src/systemd')
|
||||||
subdir('src/basic')
|
subdir('src/basic')
|
||||||
subdir('src/libsystemd')
|
subdir('src/libsystemd')
|
||||||
|
@ -1673,7 +1674,6 @@ update_dbus_docs_py = find_program('tools/update-dbus-docs.py')
|
||||||
# usually, but not always, installed in /bin.
|
# usually, but not always, installed in /bin.
|
||||||
public_programs = []
|
public_programs = []
|
||||||
|
|
||||||
subdir('src/libudev')
|
|
||||||
subdir('src/shared')
|
subdir('src/shared')
|
||||||
subdir('src/core')
|
subdir('src/core')
|
||||||
subdir('src/shutdown')
|
subdir('src/shutdown')
|
||||||
|
|
|
@ -468,6 +468,10 @@ int device_new_from_nulstr(sd_device **ret, uint8_t *nulstr, size_t len) {
|
||||||
|
|
||||||
i += end - key + 1;
|
i += end - key + 1;
|
||||||
|
|
||||||
|
/* netlink messages for some devices contain an unwanted newline at the end of value.
|
||||||
|
* Let's drop the newline and remaining characters after the newline. */
|
||||||
|
truncate_nl(key);
|
||||||
|
|
||||||
r = device_append(device, key, &major, &minor);
|
r = device_append(device, key, &major, &minor);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
|
@ -469,7 +469,7 @@ int config_parse_ad_actor_system(
|
||||||
}
|
}
|
||||||
if (ether_addr_is_null(&n) || (n.ether_addr_octet[0] & 0x01)) {
|
if (ether_addr_is_null(&n) || (n.ether_addr_octet[0] & 0x01)) {
|
||||||
log_syntax(unit, LOG_WARNING, filename, line, 0,
|
log_syntax(unit, LOG_WARNING, filename, line, 0,
|
||||||
"Not a valid MAC address %s, can not be null or multicast. Ignoring assignment.",
|
"Not an appropriate MAC address %s, cannot be null or multicast. Ignoring assignment.",
|
||||||
rvalue);
|
rvalue);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -649,7 +649,7 @@ int netdev_join(NetDev *netdev, Link *link, link_netlink_message_handler_t callb
|
||||||
return r;
|
return r;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert_not_reached("Can not join independent netdev");
|
assert_not_reached("Cannot join independent netdev");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1795,6 +1795,7 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
|
||||||
_cleanup_(dnssd_service_freep) DnssdService *service = NULL;
|
_cleanup_(dnssd_service_freep) DnssdService *service = NULL;
|
||||||
_cleanup_(sd_bus_track_unrefp) sd_bus_track *bus_track = NULL;
|
_cleanup_(sd_bus_track_unrefp) sd_bus_track *bus_track = NULL;
|
||||||
_cleanup_free_ char *path = NULL;
|
_cleanup_free_ char *path = NULL;
|
||||||
|
_cleanup_free_ char *instance_name = NULL;
|
||||||
Manager *m = userdata;
|
Manager *m = userdata;
|
||||||
DnssdService *s = NULL;
|
DnssdService *s = NULL;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
@ -1835,10 +1836,6 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
|
||||||
if (!dnssd_srv_type_is_valid(type))
|
if (!dnssd_srv_type_is_valid(type))
|
||||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "DNS-SD service type '%s' is invalid", type);
|
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "DNS-SD service type '%s' is invalid", type);
|
||||||
|
|
||||||
r = dnssd_render_instance_name(name_template, NULL);
|
|
||||||
if (r < 0)
|
|
||||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "DNS-SD service name '%s' is invalid", name_template);
|
|
||||||
|
|
||||||
service->name = strdup(name);
|
service->name = strdup(name);
|
||||||
if (!service->name)
|
if (!service->name)
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
@ -1851,6 +1848,10 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
|
||||||
if (!service->type)
|
if (!service->type)
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
|
||||||
|
r = dnssd_render_instance_name(service, &instance_name);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
r = sd_bus_message_enter_container(message, SD_BUS_TYPE_ARRAY, "a{say}");
|
r = sd_bus_message_enter_container(message, SD_BUS_TYPE_ARRAY, "a{say}");
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
|
@ -217,19 +217,21 @@ int config_parse_search_domains(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int config_parse_dnssd_service_name(
|
int config_parse_dnssd_service_name(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) {
|
||||||
const char *unit,
|
static const Specifier specifier_table[] = {
|
||||||
const char *filename,
|
{ 'm', specifier_machine_id, NULL },
|
||||||
unsigned line,
|
{ 'b', specifier_boot_id, NULL },
|
||||||
const char *section,
|
{ 'H', specifier_host_name, NULL },
|
||||||
unsigned section_line,
|
{ 'v', specifier_kernel_release, NULL },
|
||||||
const char *lvalue,
|
{ 'a', specifier_architecture, NULL },
|
||||||
int ltype,
|
{ 'o', specifier_os_id, NULL },
|
||||||
const char *rvalue,
|
{ 'w', specifier_os_version_id, NULL },
|
||||||
void *data,
|
{ 'B', specifier_os_build_id, NULL },
|
||||||
void *userdata) {
|
{ 'W', specifier_os_variant_id, NULL },
|
||||||
|
{}
|
||||||
|
};
|
||||||
DnssdService *s = userdata;
|
DnssdService *s = userdata;
|
||||||
|
_cleanup_free_ char *name = NULL;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(filename);
|
assert(filename);
|
||||||
|
@ -238,23 +240,23 @@ int config_parse_dnssd_service_name(
|
||||||
assert(s);
|
assert(s);
|
||||||
|
|
||||||
if (isempty(rvalue)) {
|
if (isempty(rvalue)) {
|
||||||
s->name_template = mfree(s->name_template);
|
log_syntax(unit, LOG_ERR, filename, line, 0, "Service instance name can't be empty. Ignoring.");
|
||||||
return 0;
|
return -EINVAL;
|
||||||
}
|
|
||||||
|
|
||||||
r = dnssd_render_instance_name(rvalue, NULL);
|
|
||||||
if (r == -ENOMEM)
|
|
||||||
return log_oom();
|
|
||||||
if (r < 0) {
|
|
||||||
log_syntax(unit, LOG_WARNING, filename, line, r,
|
|
||||||
"Invalid service instance name template '%s', ignoring: %m", rvalue);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
r = free_and_strdup(&s->name_template, rvalue);
|
r = free_and_strdup(&s->name_template, rvalue);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
|
||||||
|
r = specifier_printf(s->name_template, specifier_table, NULL, &name);
|
||||||
|
if (r < 0)
|
||||||
|
return log_debug_errno(r, "Failed to replace specifiers: %m");
|
||||||
|
|
||||||
|
if (!dns_service_name_is_valid(name)) {
|
||||||
|
log_syntax(unit, LOG_ERR, filename, line, 0, "Service instance name template renders to invalid name '%s'. Ignoring.", name);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -155,7 +155,7 @@ static int specifier_dnssd_host_name(char specifier, const void *data, const voi
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dnssd_render_instance_name(const char *name_template, char **ret_name) {
|
int dnssd_render_instance_name(DnssdService *s, char **ret_name) {
|
||||||
static const Specifier specifier_table[] = {
|
static const Specifier specifier_table[] = {
|
||||||
{ 'm', specifier_machine_id, NULL },
|
{ 'm', specifier_machine_id, NULL },
|
||||||
{ 'b', specifier_boot_id, NULL },
|
{ 'b', specifier_boot_id, NULL },
|
||||||
|
@ -171,17 +171,19 @@ int dnssd_render_instance_name(const char *name_template, char **ret_name) {
|
||||||
_cleanup_free_ char *name = NULL;
|
_cleanup_free_ char *name = NULL;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(name_template);
|
assert(s);
|
||||||
|
assert(s->name_template);
|
||||||
|
|
||||||
r = specifier_printf(name_template, specifier_table, NULL, &name);
|
r = specifier_printf(s->name_template, specifier_table, s, &name);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return log_debug_errno(r, "Failed to replace specifiers: %m");
|
||||||
|
|
||||||
if (!dns_service_name_is_valid(name))
|
if (!dns_service_name_is_valid(name))
|
||||||
return -EINVAL;
|
return log_debug_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
|
"Service instance name '%s' is invalid.",
|
||||||
|
name);
|
||||||
|
|
||||||
if (ret_name)
|
*ret_name = TAKE_PTR(name);
|
||||||
*ret_name = TAKE_PTR(name);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +227,7 @@ int dnssd_update_rrs(DnssdService *s) {
|
||||||
LIST_FOREACH(items, txt_data, s->txt_data_items)
|
LIST_FOREACH(items, txt_data, s->txt_data_items)
|
||||||
txt_data->rr = dns_resource_record_unref(txt_data->rr);
|
txt_data->rr = dns_resource_record_unref(txt_data->rr);
|
||||||
|
|
||||||
r = dnssd_render_instance_name(s->name_template, &n);
|
r = dnssd_render_instance_name(s, &n);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ DnssdTxtData *dnssd_txtdata_free_all(DnssdTxtData *txt_data);
|
||||||
DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService*, dnssd_service_free);
|
DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService*, dnssd_service_free);
|
||||||
DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdTxtData*, dnssd_txtdata_free);
|
DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdTxtData*, dnssd_txtdata_free);
|
||||||
|
|
||||||
int dnssd_render_instance_name(const char *name_template, char **ret_name);
|
int dnssd_render_instance_name(DnssdService *s, char **ret_name);
|
||||||
int dnssd_load(Manager *manager);
|
int dnssd_load(Manager *manager);
|
||||||
int dnssd_txt_item_new_from_string(const char *key, const char *value, DnsTxtItem **ret_item);
|
int dnssd_txt_item_new_from_string(const char *key, const char *value, DnsTxtItem **ret_item);
|
||||||
int dnssd_txt_item_new_from_data(const char *key, const void *value, const size_t size, DnsTxtItem **ret_item);
|
int dnssd_txt_item_new_from_data(const char *key, const void *value, const size_t size, DnsTxtItem **ret_item);
|
||||||
|
|
|
@ -64,9 +64,12 @@ if add_languages('cpp', required : false)
|
||||||
if cxx.has_argument('-std=c++17')
|
if cxx.has_argument('-std=c++17')
|
||||||
opts += [['c++', '-std=c++17']]
|
opts += [['c++', '-std=c++17']]
|
||||||
endif
|
endif
|
||||||
|
if cxx.has_argument('-std=c++20')
|
||||||
|
opts += [['c++', '-std=c++20']]
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
foreach header : _systemd_headers + _not_installed_headers + ['../libudev/libudev.h']
|
foreach header : _systemd_headers + _not_installed_headers + [libudev_h_path]
|
||||||
foreach opt : opts
|
foreach opt : opts
|
||||||
std_name = opt.length() == 2 ? '_'.join(opt[1].split(':')) : ''
|
std_name = opt.length() == 2 ? '_'.join(opt[1].split(':')) : ''
|
||||||
name = ''.join(['cc-', header.split('/')[-1], '_', opt[0], std_name])
|
name = ''.join(['cc-', header.split('/')[-1], '_', opt[0], std_name])
|
||||||
|
|
|
@ -18,11 +18,19 @@
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
use POSIX qw(WIFEXITED WEXITSTATUS);
|
|
||||||
use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR IPC_CREAT);
|
BEGIN {
|
||||||
use IPC::Semaphore;
|
my $EXIT_TEST_SKIP = 77;
|
||||||
use Time::HiRes qw(usleep);
|
|
||||||
use Cwd qw(getcwd abs_path);
|
unless (eval "use POSIX qw(WIFEXITED WEXITSTATUS);
|
||||||
|
use Cwd qw(getcwd abs_path);
|
||||||
|
use IPC::Semaphore;
|
||||||
|
use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR IPC_CREAT);
|
||||||
|
use Time::HiRes qw(usleep); 1") {
|
||||||
|
warn "Failed to import dependencies, skipping the test: $@";
|
||||||
|
exit($EXIT_TEST_SKIP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my $udev_bin = "./test-udev";
|
my $udev_bin = "./test-udev";
|
||||||
my $valgrind = 0;
|
my $valgrind = 0;
|
||||||
|
|
Loading…
Reference in New Issue