ifcfg-rh: merge branch 'th/ifcfg-netmask-legacy-rh1445414'

https://bugzilla.redhat.com/show_bug.cgi?id=1445414
This commit is contained in:
Thomas Haller 2017-05-30 13:40:51 +02:00
commit 70c0f7965d
10 changed files with 418 additions and 318 deletions

View file

@ -2009,165 +2009,10 @@ $(src_settings_plugins_ifcfg_rh_tests_test_ifcfg_rh_OBJECTS): $(libnm_core_lib_h
endif
EXTRA_DIST += \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-minimal \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-misc-variables \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-variables-corner-cases-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled-unrecognized \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-unrecognized \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-bootproto \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-plus-ip \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-shared-plus-ip \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-send-hostname \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcpv6-hostname-fallback \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp6-only \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-autoip \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-global-gateway \
src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-global-gateway-ignore \
src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway-ignore \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-obsolete-gateway-n \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-never-default \
src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-never-default \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-defroute-no \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-defroute-no-gatewaydev-yes \
src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-defroute-no-gatewaydev-yes \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-peap-mschapv2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-8021x-peap-mschapv2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-tls-agent \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-tls-always \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1X-subj-matches \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-onboot-no \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-noip \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-auto \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-quoted \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-long-quoted \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-long-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-bad-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-adhoc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-adhoc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-eap-ttls-chap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-eap-ttls-chap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-leap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap-agent \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap-always-ask \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-unquoted \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-unquoted2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-adhoc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-adhoc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-eap-tls \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-eap-tls \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-eap-ttls-tls \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-eap-ttls-tls \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-hidden \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-a \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-a-channel-mismatch \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-bg-channel-mismatch \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-always \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-never \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-default \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-missing \
src/settings/plugins/ifcfg-rh/tests/network-scripts/test_ca_cert.pem \
src/settings/plugins/ifcfg-rh/tests/network-scripts/test1_key_and_cert.pem \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-ibft \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-static-routes-legacy \
src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-static-routes-legacy \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-sit-ignore \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes \
src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes-legacy \
src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes-legacy \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-3 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-4 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-manual \
src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-8 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-16 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-24 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-only \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-passphrase \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-passphrase \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-40-ascii \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-40-ascii \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-104-ascii \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-104-ascii \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-qeth-static \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ctc-static \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-main \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-component \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-missing-stp \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-only-vlanid \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-only-device \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-physdev \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-reorder-hdr-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-reorder-hdr-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-flags-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-flags-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-no-keys \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-permissions \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-agent-keys \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-dynamic-wep-leap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-dynamic-wep-leap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-infiniband \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-eth-type \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-main \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-slave \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-slave-ib \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-mode-numeric \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-default-app-priorities \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-booleans \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-booleans \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-uints \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-uints \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-percent \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-percent \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-pgpct-not-100 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-fabric \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-vn2vn \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-invalid \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-empty-config \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-read-proxy-basic \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-trailing-spaces \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dns-options \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-wake-on-lan \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-auto-negotiate-on \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-unknown-ethtool-opt \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-only-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-1.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-2.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-3 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-3.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-bridge-component-a.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-bridge-component-b.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-wired-802-1X-subj-matches.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_User_1.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Bond_Main.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Bridge_Component.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Permissions.cexpected \
@ -2186,11 +2031,168 @@ EXTRA_DIST += \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wired_Wake-on-LAN.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection_2.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-team-slave-enp31s0f1-142.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-eth-type \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-main \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-mode-numeric \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-slave \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-slave-ib \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-component \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-main \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-missing-stp \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-booleans \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-percent \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-uints \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-default-app-priorities \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-pgpct-not-100 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-booleans \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-percent \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-uints \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dns-options \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-fabric \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-vn2vn \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-ibft \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-infiniband \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-minimal \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-misc-variables \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled-unrecognized \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-noip \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-onboot-no \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-permissions \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-read-proxy-basic \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-sit-ignore \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-static-routes-legacy \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-static-routes-legacy.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_User_1.cexpected
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-invalid \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-empty-config \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-unrecognized \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-variables-corner-cases-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-flags-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-flags-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-only-device \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-only-vlanid \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-physdev \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-reorder-hdr-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-reorder-hdr-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-trailing-spaces \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-a \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-a-channel-mismatch \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-bg-channel-mismatch \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-dynamic-wep-leap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-hidden \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap-agent \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap-always-ask \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-always \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-default \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-missing \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-never \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-auto \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-bad-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-long-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-long-quoted \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-quoted \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-104-ascii \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-40-ascii \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-adhoc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-agent-keys \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-eap-ttls-chap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-no-keys \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-passphrase \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-eap-tls \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-eap-ttls-tls \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-adhoc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-unquoted \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-unquoted2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1X-subj-matches \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-peap-mschapv2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-tls-agent \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-tls-always \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-auto-negotiate-on \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-autoip \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ctc-static \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-defroute-no \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-defroute-no-gatewaydev-yes \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-plus-ip \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-send-hostname \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp6-only \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcpv6-hostname-fallback \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-global-gateway \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-global-gateway-ignore \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-3 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-4 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-manual \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-only \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-only-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-never-default \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-obsolete-gateway-n \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-qeth-static \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-shared-plus-ip \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-bootproto \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-16 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-24 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-8 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes-legacy \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-unknown-ethtool-opt \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-wake-on-lan \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-1 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-1.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-2.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-3 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-3.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-dynamic-wep-leap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-leap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-104-ascii \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-40-ascii \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-adhoc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-eap-ttls-chap \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-passphrase \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-eap-tls \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-eap-ttls-tls \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-adhoc \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-hex \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-8021x-peap-mschapv2 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-defroute-no-gatewaydev-yes \
src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway \
src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway-ignore \
src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-never-default \
src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-static-routes-legacy \
src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes \
src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes-legacy \
src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual \
src/settings/plugins/ifcfg-rh/tests/network-scripts/test1_key_and_cert.pem \
src/settings/plugins/ifcfg-rh/tests/network-scripts/test_ca_cert.pem \
$(NULL)
# make target dependencies can't have colons in their names, which ends up
# meaning that we can't add the alias files to EXTRA_DIST. They are instead

View file

@ -1205,6 +1205,15 @@ nmtst_file_get_contents (const char *filename)
return contents;
}
#define nmtst_file_set_contents(filename, content) \
G_STMT_START { \
GError *_error = NULL; \
gboolean _success; \
\
_success = g_file_set_contents ((filename), (content), -1, &_error); \
nmtst_assert_success (_success, _error); \
} G_STMT_END
/*****************************************************************************/
static inline void

View file

@ -302,30 +302,6 @@ read_ip4_address (shvarFile *ifcfg,
return TRUE;
}
static void
_numbered_tag (char *buf, gsize buf_len, const char *tag_name, int which)
{
gsize l;
l = g_strlcpy (buf, tag_name, buf_len);
nm_assert (l < buf_len);
if (which != -1) {
buf_len -= l;
l = g_snprintf (&buf[l], buf_len, "%d", which);
nm_assert (l < buf_len);
}
}
#define numbered_tag(buf, tag_name, which) \
({ \
_nm_unused char *const _buf = (buf); \
\
/* some static assert trying to ensure that the buffer is statically allocated.
* It disallows a buffer size of sizeof(gpointer) to catch that. */ \
G_STATIC_ASSERT (G_N_ELEMENTS (buf) == sizeof (buf) && sizeof (buf) != sizeof (char *) && sizeof (buf) < G_MAXINT); \
_numbered_tag (buf, sizeof (buf), ""tag_name"", (which)); \
buf; \
})
static gboolean
is_any_ip4_address_defined (shvarFile *ifcfg, int *idx)
{

View file

@ -57,4 +57,28 @@ char *utils_detect_ifcfg_path (const char *path, gboolean only_ifcfg);
void nms_ifcfg_rh_utils_user_key_encode (const char *key, GString *str_buffer);
gboolean nms_ifcfg_rh_utils_user_key_decode (const char *name, GString *str_buffer);
static inline const char *
_nms_ifcfg_rh_utils_numbered_tag (char *buf, gsize buf_len, const char *tag_name, int which)
{
gsize l;
l = g_strlcpy (buf, tag_name, buf_len);
nm_assert (l < buf_len);
if (which != -1) {
buf_len -= l;
l = g_snprintf (&buf[l], buf_len, "%d", which);
nm_assert (l < buf_len);
}
return buf;
}
#define numbered_tag(buf, tag_name, which) \
({ \
_nm_unused char *const _buf = (buf); \
\
/* some static assert trying to ensure that the buffer is statically allocated.
* It disallows a buffer size of sizeof(gpointer) to catch that. */ \
G_STATIC_ASSERT (G_N_ELEMENTS (buf) == sizeof (buf) && sizeof (buf) != sizeof (char *) && sizeof (buf) < G_MAXINT); \
_nms_ifcfg_rh_utils_numbered_tag (buf, sizeof (buf), ""tag_name"", (which)); \
})
#endif /* _UTILS_H_ */

View file

@ -595,13 +595,13 @@ write_wireless_security_setting (NMConnection *connection,
/* Clear existing keys */
for (i = 0; i < 4; i++) {
tmp = g_strdup_printf ("KEY_PASSPHRASE%d", i + 1);
set_secret (ifcfg, tmp, NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
g_free (tmp);
char tag[64];
tmp = g_strdup_printf ("KEY%d", i + 1);
set_secret (ifcfg, tmp, NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
g_free (tmp);
numbered_tag (tag, "KEY_PASSPHRASE", i + 1);
set_secret (ifcfg, tag, NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
numbered_tag (tag, "KEY", i + 1);
set_secret (ifcfg, tag, NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
}
/* And write the new ones out */
@ -614,7 +614,9 @@ write_wireless_security_setting (NMConnection *connection,
key = nm_setting_wireless_security_get_wep_key (s_wsec, i);
if (key) {
char *ascii_key = NULL;
gs_free char *ascii_key = NULL;
char tag[64];
gboolean key_valid = TRUE;
/* Passphrase needs a different ifcfg key since with WEP, there
* are some passphrases that are indistinguishable from WEP hex
@ -627,10 +629,11 @@ write_wireless_security_setting (NMConnection *connection,
else if (nm_utils_wep_key_valid (key, NM_WEP_KEY_TYPE_PASSPHRASE))
key_type = NM_WEP_KEY_TYPE_PASSPHRASE;
}
if (key_type == NM_WEP_KEY_TYPE_PASSPHRASE)
tmp = g_strdup_printf ("KEY_PASSPHRASE%d", i + 1);
numbered_tag (tag, "KEY_PASSPHRASE", i + 1);
else if (key_type == NM_WEP_KEY_TYPE_KEY) {
tmp = g_strdup_printf ("KEY%d", i + 1);
numbered_tag (tag, "KEY", i + 1);
/* Add 's:' prefix for ASCII keys */
if (strlen (key) == 5 || strlen (key) == 13) {
@ -639,18 +642,16 @@ write_wireless_security_setting (NMConnection *connection,
}
} else {
_LOGW ("invalid WEP key '%s'", key);
tmp = NULL;
key_valid = FALSE;
}
if (tmp) {
if (key_valid) {
set_secret (ifcfg,
tmp,
tag,
key,
"WEP_KEY_FLAGS",
nm_setting_wireless_security_get_wep_key_flags (s_wsec));
}
g_free (tmp);
g_free (ascii_key);
}
}
}
@ -732,7 +733,6 @@ write_wireless_setting (NMConnection *connection,
GError **error)
{
NMSettingWireless *s_wireless;
char *tmp;
GBytes *ssid;
const guint8 *ssid_data;
gsize ssid_len;
@ -878,13 +878,13 @@ write_wireless_setting (NMConnection *connection,
/* Clear existing keys */
set_secret (ifcfg, "KEY", NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
for (i = 0; i < 4; i++) {
tmp = g_strdup_printf ("KEY_PASSPHRASE%d", i + 1);
set_secret (ifcfg, tmp, NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
g_free (tmp);
char tag[64];
tmp = g_strdup_printf ("KEY%d", i + 1);
set_secret (ifcfg, tmp, NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
g_free (tmp);
numbered_tag (tag, "KEY_PASSPHRASE", i + 1);
set_secret (ifcfg, tag, NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
numbered_tag (tag, "KEY", i + 1);
set_secret (ifcfg, tag, NULL, "WEP_KEY_FLAGS", NM_SETTING_SECRET_FLAG_NONE);
}
svUnsetValue (ifcfg, "DEFAULTKEY");
@ -1704,8 +1704,8 @@ write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg)
guint32 n, i;
GString *str;
const char *master, *master_iface = NULL, *type;
char *tmp;
gint i_int;
const char *tmp;
svSetValueStr (ifcfg, "NAME", nm_setting_connection_get_id (s_con));
svSetValueStr (ifcfg, "UUID", nm_setting_connection_get_uuid (s_con));
@ -1714,15 +1714,16 @@ write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg)
svSetValueBoolean (ifcfg, "ONBOOT", nm_setting_connection_get_autoconnect (s_con));
i_int = nm_setting_connection_get_autoconnect_priority (s_con);
tmp = i_int != NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_DEFAULT
? g_strdup_printf ("%d", i_int) : NULL;
svSetValueStr (ifcfg, "AUTOCONNECT_PRIORITY", tmp);
g_free (tmp);
if (i_int != NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_DEFAULT)
svSetValueInt64 (ifcfg, "AUTOCONNECT_PRIORITY", i_int);
else
svUnsetValue (ifcfg, "AUTOCONNECT_PRIORITY");
i_int = nm_setting_connection_get_autoconnect_retries (s_con);
tmp = i_int != -1 ? g_strdup_printf ("%d", i_int) : NULL;
svSetValueStr (ifcfg, "AUTOCONNECT_RETRIES", tmp);
g_free (tmp);
if (i_int != -1)
svSetValueInt64 (ifcfg, "AUTOCONNECT_RETRIES", i_int);
else
svUnsetValue (ifcfg, "AUTOCONNECT_RETRIES");
/* Only save the value for master connections */
type = nm_setting_connection_get_connection_type (s_con);
@ -1838,12 +1839,11 @@ write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg)
g_string_free (str, TRUE);
}
svUnsetValue (ifcfg, "GATEWAY_PING_TIMEOUT");
if (nm_setting_connection_get_gateway_ping_timeout (s_con)) {
tmp = g_strdup_printf ("%" G_GUINT32_FORMAT, nm_setting_connection_get_gateway_ping_timeout (s_con));
svSetValueStr (ifcfg, "GATEWAY_PING_TIMEOUT", tmp);
g_free (tmp);
}
svSetValueInt64 (ifcfg, "GATEWAY_PING_TIMEOUT",
nm_setting_connection_get_gateway_ping_timeout (s_con));
} else
svUnsetValue (ifcfg, "GATEWAY_PING_TIMEOUT");
switch (nm_setting_connection_get_metered (s_con)) {
case NM_METERED_YES:
@ -2044,10 +2044,7 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
NMSettingIPConfig *s_ip4;
const char *value;
char *tmp;
char addr_key[64];
char prefix_key[64];
char netmask_key[64];
char gw_key[64];
char tag[64];
char *route_path = NULL;
gint j;
guint i, num, n;
@ -2056,6 +2053,7 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
int timeout;
GString *searches;
const char *method = NULL;
gboolean has_netmask;
s_ip4 = nm_connection_get_setting_ip4_config (connection);
if (!s_ip4) {
@ -2065,15 +2063,12 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
* for no strong reason. */
svUnsetValue (ifcfg, "BOOTPROTO");
svUnsetValue (ifcfg, "IPADDR");
svUnsetValue (ifcfg, "PREFIX");
svUnsetValue (ifcfg, "NETMASK");
svUnsetValue (ifcfg, "GATEWAY");
svUnsetValue (ifcfg, "IPADDR0");
svUnsetValue (ifcfg, "PREFIX0");
svUnsetValue (ifcfg, "NETMASK0");
svUnsetValue (ifcfg, "GATEWAY0");
for (j = -1; j < 256; j++) {
svUnsetValue (ifcfg, numbered_tag (tag, "IPADDR", j));
svUnsetValue (ifcfg, numbered_tag (tag, "PREFIX", j));
svUnsetValue (ifcfg, numbered_tag (tag, "NETMASK", j));
svUnsetValue (ifcfg, numbered_tag (tag, "GATEWAY", j));
}
return TRUE;
}
@ -2089,22 +2084,10 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
/* IPv4 disabled, clear IPv4 related parameters */
svUnsetValue (ifcfg, "BOOTPROTO");
for (j = -1; j < 256; j++) {
if (j == -1) {
nm_sprintf_buf (addr_key, "IPADDR");
nm_sprintf_buf (prefix_key, "PREFIX");
nm_sprintf_buf (netmask_key, "NETMASK");
nm_sprintf_buf (gw_key, "GATEWAY");
} else {
nm_sprintf_buf (addr_key, "IPADDR%d", (guint) j);
nm_sprintf_buf (prefix_key, "PREFIX%u", (guint) j);
nm_sprintf_buf (netmask_key, "NETMASK%u", (guint) j);
nm_sprintf_buf (gw_key, "GATEWAY%u", (guint) j);
}
svUnsetValue (ifcfg, addr_key);
svUnsetValue (ifcfg, prefix_key);
svUnsetValue (ifcfg, netmask_key);
svUnsetValue (ifcfg, gw_key);
svUnsetValue (ifcfg, numbered_tag (tag, "IPADDR", j));
svUnsetValue (ifcfg, numbered_tag (tag, "PREFIX", j));
svUnsetValue (ifcfg, numbered_tag (tag, "NETMASK", j));
svUnsetValue (ifcfg, numbered_tag (tag, "GATEWAY", j));
}
route_path = utils_get_route_path (svFileGetName (ifcfg));
@ -2128,16 +2111,7 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
else if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_SHARED))
svSetValueStr (ifcfg, "BOOTPROTO", "shared");
/* Clear out un-numbered IP address fields */
svUnsetValue (ifcfg, "IPADDR");
svUnsetValue (ifcfg, "PREFIX");
svUnsetValue (ifcfg, "NETMASK");
svUnsetValue (ifcfg, "GATEWAY");
/* Clear out zero-indexed IP address fields */
svUnsetValue (ifcfg, "IPADDR0");
svUnsetValue (ifcfg, "PREFIX0");
svUnsetValue (ifcfg, "NETMASK0");
svUnsetValue (ifcfg, "GATEWAY0");
has_netmask = !!svFindFirstKeyWithPrefix (ifcfg, "NETMASK");
/* Write out IPADDR<n>, PREFIX<n>, GATEWAY<n> for current IP addresses
* without labels. Unset obsolete NETMASK<n>.
@ -2162,59 +2136,60 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
* See https://bugzilla.redhat.com/show_bug.cgi?id=771673
* and https://bugzilla.redhat.com/show_bug.cgi?id=1105770
*/
nm_sprintf_buf (addr_key, "IPADDR");
nm_sprintf_buf (prefix_key, "PREFIX");
nm_sprintf_buf (netmask_key, "NETMASK");
nm_sprintf_buf (gw_key, "GATEWAY");
} else {
nm_sprintf_buf (addr_key, "IPADDR%u", n);
nm_sprintf_buf (prefix_key, "PREFIX%u", n);
nm_sprintf_buf (netmask_key, "NETMASK%u", n);
nm_sprintf_buf (gw_key, "GATEWAY%u", n);
}
j = -1;
} else
j = n;
svSetValueStr (ifcfg, addr_key, nm_ip_address_get_address (addr));
svSetValueStr (ifcfg,
numbered_tag (tag, "IPADDR", j),
nm_ip_address_get_address (addr));
prefix = nm_ip_address_get_prefix (addr);
svSetValueInt64 (ifcfg, prefix_key, prefix);
svSetValueInt64 (ifcfg, numbered_tag (tag, "PREFIX", j), prefix);
/* If the legacy "NETMASK" is present, keep it. */
if (svGetValue (ifcfg, netmask_key, &tmp)) {
numbered_tag (tag, "NETMASK", j);
if (has_netmask) {
char buf[INET_ADDRSTRLEN];
g_free (tmp);
svSetValueStr (ifcfg, netmask_key, nm_utils_inet4_ntop (prefix, buf));
}
svSetValueStr (ifcfg, tag,
nm_utils_inet4_ntop (nm_utils_ip4_prefix_to_netmask (prefix), buf));
} else
svUnsetValue (ifcfg, tag);
svUnsetValue (ifcfg, gw_key);
n++;
}
/* Clear remaining IPADDR<n..255>, etc */
for (i = n; i < 256; i++) {
nm_sprintf_buf (addr_key, "IPADDR%u", i);
nm_sprintf_buf (prefix_key, "PREFIX%u", i);
nm_sprintf_buf (netmask_key, "NETMASK%u", i);
nm_sprintf_buf (gw_key, "GATEWAY%u", i);
svUnsetValue (ifcfg, addr_key);
svUnsetValue (ifcfg, prefix_key);
svUnsetValue (ifcfg, netmask_key);
svUnsetValue (ifcfg, gw_key);
svUnsetValue (ifcfg, numbered_tag (tag, "IPADDR", 0));
svUnsetValue (ifcfg, numbered_tag (tag, "PREFIX", 0));
svUnsetValue (ifcfg, numbered_tag (tag, "NETMASK", 0));
if (n == 0) {
svUnsetValue (ifcfg, "IPADDR");
svUnsetValue (ifcfg, "PREFIX");
svUnsetValue (ifcfg, "NETMASK");
}
for (j = n; j < 256; j++) {
svUnsetValue (ifcfg, numbered_tag (tag, "IPADDR", j));
svUnsetValue (ifcfg, numbered_tag (tag, "PREFIX", j));
svUnsetValue (ifcfg, numbered_tag (tag, "NETMASK", j));
}
for (j = -1; j < 256; j++) {
if (j != 0)
svUnsetValue (ifcfg, numbered_tag (tag, "GATEWAY", j));
}
svSetValueStr (ifcfg, "GATEWAY", nm_setting_ip_config_get_gateway (s_ip4));
num = nm_setting_ip_config_get_num_dns (s_ip4);
for (i = 0; i < 254; i++) {
const char *dns;
nm_sprintf_buf (addr_key, "DNS%u", i + 1);
numbered_tag (tag, "DNS", i + 1);
if (i >= num)
svUnsetValue (ifcfg, addr_key);
svUnsetValue (ifcfg, tag);
else {
dns = nm_setting_ip_config_get_dns (s_ip4, i);
svSetValueStr (ifcfg, addr_key, dns);
svSetValueStr (ifcfg, tag, dns);
}
}
@ -2294,14 +2269,17 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
NMIPRoute *route;
guint32 netmask;
gint64 metric;
char addr_key[64];
char gw_key[64];
char netmask_key[64];
char metric_key[64];
char options_key[64];
nm_sprintf_buf (addr_key, "ADDRESS%u", i);
nm_sprintf_buf (netmask_key, "NETMASK%u", i);
nm_sprintf_buf (gw_key, "GATEWAY%u", i);
nm_sprintf_buf (metric_key, "METRIC%u", i);
nm_sprintf_buf (options_key, "OPTIONS%u", i);
numbered_tag (addr_key, "ADDRESS", i);
numbered_tag (netmask_key, "NETMASK", i);
numbered_tag (gw_key, "GATEWAY", i);
numbered_tag (metric_key, "METRIC", i);
numbered_tag (options_key, "OPTIONS", i);
if (i >= num) {
svUnsetValue (routefile, addr_key);
@ -2615,15 +2593,15 @@ write_ip6_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
num4 = s_ip4 ? nm_setting_ip_config_get_num_dns (s_ip4) : 0; /* from where to start with IPv6 entries */
num = nm_setting_ip_config_get_num_dns (s_ip6);
for (i = 0; i < 254; i++) {
char addr_key[64];
char tag[64];
nm_sprintf_buf (addr_key, "DNS%u", i + num4 + 1);
numbered_tag (tag, "DNS", i + num4 + 1);
if (i >= num)
svUnsetValue (ifcfg, addr_key);
svUnsetValue (ifcfg, tag);
else {
dns = nm_setting_ip_config_get_dns (s_ip6, i);
svSetValueStr (ifcfg, addr_key, dns);
svSetValueStr (ifcfg, tag, dns);
}
}

View file

@ -891,6 +891,28 @@ svGetKeys (shvarFile *s)
/*****************************************************************************/
const char *
svFindFirstKeyWithPrefix (shvarFile *s, const char *key_prefix)
{
CList *current;
const shvarLine *l;
g_return_val_if_fail (s, NULL);
g_return_val_if_fail (key_prefix, NULL);
c_list_for_each (current, &s->lst_head) {
l = c_list_entry (current, shvarLine, lst);
if ( l->key
&& l->line
&& g_str_has_prefix (l->key, key_prefix))
return l->key;
}
return NULL;
}
/*****************************************************************************/
static const char *
_svGetValue (shvarFile *s, const char *key, char **to_free)
{
@ -1097,14 +1119,15 @@ svGetValueEnum (shvarFile *s, const char *key,
/* Same as svSetValueStr() but it preserves empty @value -- contrary to
* svSetValueStr() for which "" effectively means to remove the value. */
void
gboolean
svSetValue (shvarFile *s, const char *key, const char *value)
{
CList *current;
shvarLine *line, *l;
gboolean changed = FALSE;
g_return_if_fail (s != NULL);
g_return_if_fail (key != NULL);
g_return_val_if_fail (s, FALSE);
g_return_val_if_fail (key, FALSE);
nm_assert (_shell_is_name (key, -1));
@ -1116,7 +1139,7 @@ svSetValue (shvarFile *s, const char *key, const char *value)
/* if we find multiple entries for the same key, we can
* delete all but the last. */
line_free (line);
s->modified = TRUE;
changed = TRUE;
}
line = l;
}
@ -1124,18 +1147,23 @@ svSetValue (shvarFile *s, const char *key, const char *value)
if (!value) {
if (line) {
if (nm_clear_g_free (&line->line))
s->modified = TRUE;
if (nm_clear_g_free (&line->line)) {
changed = TRUE;
}
}
} else {
if (!line) {
c_list_link_tail (&s->lst_head, &line_new_build (key, value)->lst);
s->modified = TRUE;
changed = TRUE;
} else {
if (line_set (line, value))
s->modified = TRUE;
changed = TRUE;
}
}
if (changed)
s->modified = TRUE;
return changed;
}
/* Set the variable <key> equal to the value <value>.
@ -1143,39 +1171,39 @@ svSetValue (shvarFile *s, const char *key, const char *value)
* the key=value pair after that line. Otherwise, append the pair
* to the bottom of the file.
*/
void
gboolean
svSetValueStr (shvarFile *s, const char *key, const char *value)
{
svSetValue (s, key, value && value[0] ? value : NULL);
return svSetValue (s, key, value && value[0] ? value : NULL);
}
void
gboolean
svSetValueInt64 (shvarFile *s, const char *key, gint64 value)
{
char buf[NM_DECIMAL_STR_MAX (value)];
svSetValue (s, key, nm_sprintf_buf (buf, "%"G_GINT64_FORMAT, value));
return svSetValue (s, key, nm_sprintf_buf (buf, "%"G_GINT64_FORMAT, value));
}
void
gboolean
svSetValueBoolean (shvarFile *s, const char *key, gboolean value)
{
svSetValue (s, key, value ? "yes" : "no");
return svSetValue (s, key, value ? "yes" : "no");
}
void
gboolean
svSetValueEnum (shvarFile *s, const char *key, GType gtype, int value)
{
gs_free char *v = NULL;
v = _nm_utils_enum_to_str_full (gtype, value, " ");
svSetValueStr (s, key, v);
return svSetValueStr (s, key, v);
}
void
gboolean
svUnsetValue (shvarFile *s, const char *key)
{
svSetValue (s, key, NULL);
return svSetValue (s, key, NULL);
}
void

View file

@ -44,6 +44,8 @@ shvarFile *svCreateFile (const char *name);
/* Open the file <name>, return shvarFile on success, NULL on failure */
shvarFile *svOpenFile (const char *name, GError **error);
const char *svFindFirstKeyWithPrefix (shvarFile *s, const char *key_prefix);
/* Get the value associated with the key, and leave the current pointer
* pointing at the line containing the value. The char* returned MUST
* be freed by the caller.
@ -75,13 +77,13 @@ gboolean svGetValueEnum (shvarFile *s, const char *key,
* the key=value pair after that line. Otherwise, prepend the pair
* to the top of the file.
*/
void svSetValue (shvarFile *s, const char *key, const char *value);
void svSetValueStr (shvarFile *s, const char *key, const char *value);
void svSetValueBoolean (shvarFile *s, const char *key, gboolean value);
void svSetValueInt64 (shvarFile *s, const char *key, gint64 value);
void svSetValueEnum (shvarFile *s, const char *key, GType gtype, int value);
gboolean svSetValue (shvarFile *s, const char *key, const char *value);
gboolean svSetValueStr (shvarFile *s, const char *key, const char *value);
gboolean svSetValueBoolean (shvarFile *s, const char *key, gboolean value);
gboolean svSetValueInt64 (shvarFile *s, const char *key, gint64 value);
gboolean svSetValueEnum (shvarFile *s, const char *key, GType gtype, int value);
void svUnsetValue (shvarFile *s, const char *key);
gboolean svUnsetValue (shvarFile *s, const char *key);
void svUnsetValuesWithPrefix (shvarFile *s, const char *prefix);

View file

@ -0,0 +1,14 @@
DNS1="192.0.2.1"
IPADDR="102.0.2.2"
GATEWAY="192.0.2.1"
NETMASK="255.254.0.0"
BOOTPROTO="static"
DEVICE="eth1"
ONBOOT="yes"
IPV6INIT="yes"
#bogus
PREFIX1=25
NETMASK0=255.255.0.0
#end

View file

@ -0,0 +1,23 @@
DNS1=192.0.2.1
IPADDR=102.0.2.2
GATEWAY=192.0.2.1
NETMASK=255.254.0.0
BOOTPROTO="static"
DEVICE=eth1
ONBOOT=yes
IPV6INIT=yes
#bogus
#end
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
PREFIX=15
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="System netmask-1"
UUID=${UUID}

View file

@ -399,6 +399,48 @@ _writer_new_connection_fail (NMConnection *connection,
/*****************************************************************************/
static void
test_read_netmask_1 (void)
{
nmtst_auto_unlinkfile char *testfile = NULL;
gs_unref_object NMConnection *connection = NULL;
gs_unref_object NMConnection *reread = NULL;
gs_free char *content = NULL;
NMSettingConnection *s_con;
NMSettingIPConfig *s_ip4;
NMIPAddress *ip4_addr;
const char *FILENAME = TEST_IFCFG_DIR "/network-scripts/ifcfg-netmask-1";
connection = _connection_from_file (FILENAME, NULL, TYPE_ETHERNET, NULL);
s_con = nm_connection_get_setting_connection (connection);
g_assert (s_con);
g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "System netmask-1");
s_ip4 = nm_connection_get_setting_ip4_config (connection);
g_assert (s_ip4);
g_assert_cmpuint (nm_setting_ip_config_get_num_dns (s_ip4), ==, 1);
ip4_addr = nm_setting_ip_config_get_address (s_ip4, 0);
g_assert (ip4_addr);
g_assert_cmpstr (nm_ip_address_get_address (ip4_addr), ==, "102.0.2.2");
g_assert_cmpint (nm_ip_address_get_prefix (ip4_addr), ==, 15);
nmtst_assert_connection_verifies_without_normalization (connection);
content = nmtst_file_get_contents (FILENAME);
testfile = g_strdup (TEST_SCRATCH_DIR "/network-scripts/ifcfg-netmask-1.copy");
nmtst_file_set_contents (testfile, content);
_writer_update_connection (connection,
TEST_SCRATCH_DIR "/network-scripts/",
testfile,
TEST_IFCFG_DIR "/network-scripts/ifcfg-netmask-1.cexpected");
}
/*****************************************************************************/
static gboolean
verify_cert_or_key (NMSetting8021x *s_compare,
const char *file,
@ -9349,6 +9391,8 @@ int main (int argc, char **argv)
nmtst_add_test_func (TPATH "read-static", test_read_wired_static, TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-static", "System test-wired-static", GINT_TO_POINTER (TRUE));
nmtst_add_test_func (TPATH "read-static-bootproto", test_read_wired_static, TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-static-bootproto", "System test-wired-static-bootproto", GINT_TO_POINTER (FALSE));
g_test_add_func (TPATH "read-netmask-1", test_read_netmask_1);
g_test_add_func (TPATH "read-dhcp", test_read_wired_dhcp);
g_test_add_func (TPATH "read-dhcp-plus-ip", test_read_wired_dhcp_plus_ip);
g_test_add_func (TPATH "read-shared-plus-ip", test_read_wired_shared_plus_ip);