summary refs log tree commit diff
path: root/src/dhcp/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/dhcp/tests')
-rw-r--r--src/dhcp/tests/test-dhcp-dhclient.c129
1 files changed, 110 insertions, 19 deletions
diff --git a/src/dhcp/tests/test-dhcp-dhclient.c b/src/dhcp/tests/test-dhcp-dhclient.c
index f4cf9c9f..40a3e072 100644
--- a/src/dhcp/tests/test-dhcp-dhclient.c
+++ b/src/dhcp/tests/test-dhcp-dhclient.c
@@ -40,7 +40,7 @@ test_config (const char *orig,
              const char *expected,
              gboolean ipv6,
              const char *hostname,
-             const char *fqdn,
+             gboolean use_fqdn,
              const char *dhcp_client_id,
              GBytes *expected_new_client_id,
              const char *iface,
@@ -60,7 +60,7 @@ test_config (const char *orig,
 	                                      client_id,
 	                                      anycast_addr,
 	                                      hostname,
-	                                      fqdn,
+	                                      use_fqdn,
 	                                      "/path/to/dhclient.conf",
 	                                      orig,
 	                                      &new_client_id);
@@ -105,7 +105,7 @@ static const char *orig_missing_expected = \
 static void
 test_orig_missing (void)
 {
-	test_config (NULL, orig_missing_expected, FALSE, NULL, NULL, NULL, NULL, "eth0", NULL);
+	test_config (NULL, orig_missing_expected, FALSE, NULL, FALSE, NULL, NULL, "eth0", NULL);
 }
 
 /*****************************************************************************/
@@ -134,7 +134,7 @@ static void
 test_override_client_id (void)
 {
 	test_config (override_client_id_orig, override_client_id_expected,
-	             FALSE, NULL, NULL,
+	             FALSE, NULL, FALSE,
 	             "11:22:33:44:55:66",
 	             NULL,
 	             "eth0",
@@ -163,7 +163,7 @@ static void
 test_quote_client_id (void)
 {
 	test_config (NULL, quote_client_id_expected,
-	             FALSE, NULL, NULL,
+	             FALSE, NULL, FALSE,
 	             "1234",
 	             NULL,
 	             "eth0",
@@ -192,7 +192,7 @@ static void
 test_ascii_client_id (void)
 {
 	test_config (NULL, ascii_client_id_expected,
-	             FALSE, NULL, NULL,
+	             FALSE, NULL, FALSE,
 	             "qb:cd:ef:12:34:56",
 	             NULL,
 	             "eth0",
@@ -221,7 +221,7 @@ static void
 test_hex_single_client_id (void)
 {
 	test_config (NULL, hex_single_client_id_expected,
-	             FALSE, NULL, NULL,
+	             FALSE, NULL, FALSE,
 	             "ab:cd:e:12:34:56",
 	             NULL,
 	             "eth0",
@@ -258,7 +258,7 @@ test_existing_hex_client_id (void)
 
 	new_client_id = g_bytes_new (bytes, sizeof (bytes));
 	test_config (existing_hex_client_id_orig, existing_hex_client_id_expected,
-	             FALSE, NULL, NULL,
+	             FALSE, NULL, FALSE,
 	             NULL,
 	             new_client_id,
 	             "eth0",
@@ -298,7 +298,7 @@ test_existing_ascii_client_id (void)
 	memcpy (buf + 1, EACID, NM_STRLEN (EACID));
 	new_client_id = g_bytes_new (buf, sizeof (buf));
 	test_config (existing_ascii_client_id_orig, existing_ascii_client_id_expected,
-	             FALSE, NULL, NULL,
+	             FALSE, NULL, FALSE,
 	             NULL,
 	             new_client_id,
 	             "eth0",
@@ -327,8 +327,8 @@ static void
 test_fqdn (void)
 {
 	test_config (NULL, fqdn_expected,
-	             FALSE, NULL,
-	             "foo.bar.com", NULL,
+	             FALSE, "foo.bar.com",
+	             TRUE, NULL,
 	             NULL,
 	             "eth0",
 	             NULL);
@@ -367,8 +367,8 @@ test_fqdn_options_override (void)
 {
 	test_config (fqdn_options_override_orig,
 	             fqdn_options_override_expected,
-	             FALSE, NULL,
-	             "example2.com", NULL,
+	             FALSE, "example2.com",
+	             TRUE, NULL,
 	             NULL,
 	             "eth0",
 	             NULL);
@@ -400,7 +400,7 @@ static void
 test_override_hostname (void)
 {
 	test_config (override_hostname_orig, override_hostname_expected,
-	             FALSE, "blahblah", NULL,
+	             FALSE, "blahblah", FALSE,
 	             NULL,
 	             NULL,
 	             "eth0",
@@ -429,7 +429,7 @@ static void
 test_override_hostname6 (void)
 {
 	test_config (override_hostname6_orig, override_hostname6_expected,
-	             TRUE, "blahblah.local", NULL,
+	             TRUE, "blahblah.local", TRUE,
 	             NULL,
 	             NULL,
 	             "eth0",
@@ -452,7 +452,7 @@ test_nonfqdn_hostname6 (void)
 	/* Non-FQDN hostname can't be used with dhclient */
 	test_config (NULL, nonfqdn_hostname6_expected,
 	             TRUE, "blahblah",
-	             NULL, NULL,
+	             TRUE, NULL,
 	             NULL,
 	             "eth0",
 	             NULL);
@@ -487,7 +487,7 @@ test_existing_alsoreq (void)
 {
 	test_config (existing_alsoreq_orig, existing_alsoreq_expected,
 	             FALSE, NULL,
-	             NULL,
+	             FALSE,
 	             NULL,
 	             NULL,
 	             "eth0",
@@ -526,7 +526,7 @@ test_existing_req (void)
 {
 	test_config (existing_req_orig, existing_req_expected,
 	             FALSE, NULL,
-	             NULL,
+	             FALSE,
 	             NULL,
 	             NULL,
 	             "eth0",
@@ -565,7 +565,7 @@ static void
 test_existing_multiline_alsoreq (void)
 {
 	test_config (existing_multiline_alsoreq_orig, existing_multiline_alsoreq_expected,
-	             FALSE, NULL, NULL,
+	             FALSE, NULL, FALSE,
 	             NULL,
 	             NULL,
 	             "eth0",
@@ -744,6 +744,95 @@ test_write_existing_commented_duid (void)
 
 /*****************************************************************************/
 
+static const char *interface1_orig = \
+	"interface \"eth0\" {\n"
+	"	also request my-option;\n"
+	"	initial-delay 5;\n"
+	"}\n"
+	"interface \"eth1\" {\n"
+	"	also request another-option;\n"
+	"	initial-delay 0;\n"
+	"}\n"
+	"\n"
+	"also request yet-another-option;\n";
+
+static const char *interface1_expected = \
+	"# Created by NetworkManager\n"
+	"# Merged from /path/to/dhclient.conf\n"
+	"\n"
+	"initial-delay 5;\n"
+	"\n"
+	"option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;\n"
+	"option ms-classless-static-routes code 249 = array of unsigned integer 8;\n"
+	"option wpad code 252 = string;\n"
+	"\n"
+	"also request my-option;\n"
+	"also request yet-another-option;\n"
+	"also request rfc3442-classless-static-routes;\n"
+	"also request ms-classless-static-routes;\n"
+	"also request static-routes;\n"
+	"also request wpad;\n"
+	"also request ntp-servers;\n"
+	"\n";
+
+static void
+test_interface1 (void)
+{
+	test_config (interface1_orig, interface1_expected,
+	             FALSE, NULL, FALSE,
+	             NULL,
+	             NULL,
+	             "eth0",
+	             NULL);
+}
+
+/*****************************************************************************/
+
+static const char *interface2_orig = \
+	"interface eth0 {\n"
+	"	also request my-option;\n"
+	"	initial-delay 5;\n"
+	" }\n"
+	"interface eth1 {\n"
+	"	initial-delay 0;\n"
+	"	request another-option;\n"
+	" } \n"
+	"\n"
+	"also request yet-another-option;\n";
+
+static const char *interface2_expected = \
+	"# Created by NetworkManager\n"
+	"# Merged from /path/to/dhclient.conf\n"
+	"\n"
+	"initial-delay 0;\n"
+	"\n"
+	"option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;\n"
+	"option ms-classless-static-routes code 249 = array of unsigned integer 8;\n"
+	"option wpad code 252 = string;\n"
+	"\n"
+	"request; # override dhclient defaults\n"
+	"also request another-option;\n"
+	"also request yet-another-option;\n"
+	"also request rfc3442-classless-static-routes;\n"
+	"also request ms-classless-static-routes;\n"
+	"also request static-routes;\n"
+	"also request wpad;\n"
+	"also request ntp-servers;\n"
+	"\n";
+
+static void
+test_interface2 (void)
+{
+	test_config (interface2_orig, interface2_expected,
+	             FALSE, NULL, FALSE,
+	             NULL,
+	             NULL,
+	             "eth1",
+	             NULL);
+}
+
+/*****************************************************************************/
+
 static void
 test_read_lease_ip4_config_basic (void)
 {
@@ -891,6 +980,8 @@ main (int argc, char **argv)
 	g_test_add_func ("/dhcp/dhclient/existing_alsoreq", test_existing_alsoreq);
 	g_test_add_func ("/dhcp/dhclient/existing_multiline_alsoreq", test_existing_multiline_alsoreq);
 	g_test_add_func ("/dhcp/dhclient/duids", test_duids);
+	g_test_add_func ("/dhcp/dhclient/interface/1", test_interface1);
+	g_test_add_func ("/dhcp/dhclient/interface/2", test_interface2);
 
 	g_test_add_func ("/dhcp/dhclient/read_duid_from_leasefile", test_read_duid_from_leasefile);
 	g_test_add_func ("/dhcp/dhclient/read_commented_duid_from_leasefile", test_read_commented_duid_from_leasefile);