Skip to content

Commit 48196f7

Browse files
committed
[#3476] Addressed review comments
modified: src/bin/admin/kea-admin.in src/lib/dhcp/option_data_types.h src/lib/dhcp/tests/option_definition_unittest.cc src/lib/dhcpsrv/testutils/generic_cb_dhcp4_unittest.cc src/lib/dhcpsrv/testutils/generic_cb_dhcp6_unittest.cc src/share/database/scripts/mysql/dhcpdb_create.mysql src/share/database/scripts/mysql/upgrade_023_to_024.sh.in src/share/database/scripts/pgsql/dhcpdb_create.pgsql src/share/database/scripts/pgsql/upgrade_023_to_024.sh.in
1 parent 7d87bf4 commit 48196f7

9 files changed

+40
-35
lines changed

src/bin/admin/kea-admin.in

+6-4
Original file line numberDiff line numberDiff line change
@@ -371,12 +371,13 @@ mysql_upgrade() {
371371
printf "Verifying upgrade permissions for %s\n" "$db_user"
372372
mysql_can_create
373373

374-
for script in "${upgrade_scripts_dir}"/upgrade*.sh
374+
upgrade_scripts=$(find "${upgrade_scripts_dir}" -type f -name 'upgrade_*.sh' | sort -V)
375+
for script in ${upgrade_scripts}
375376
do
376377
echo "Processing $script file..."
377378
"${script}" --host="${db_host}" --user="${db_user}" \
378379
--password="${db_password}" "${db_name}" ${extra_arguments}
379-
done | sort -V
380+
done
380381

381382
version=$(checked_mysql_version)
382383
printf 'Schema version reported after upgrade: %s\n' "${version}"
@@ -419,11 +420,12 @@ pgsql_upgrade() {
419420
export PGPASSWORD=$db_password
420421

421422
upgrade_scripts=$(find "${upgrade_scripts_dir}" -type f -name 'upgrade_*.sh' | sort -V)
422-
for script in ${upgrade_scripts}; do
423+
for script in ${upgrade_scripts}
424+
do
423425
echo "Processing $script file..."
424426
"${script}" -U "${db_user}" -h "${db_host}" \
425427
-d "${db_name}" ${extra_arguments}
426-
done | sort -V
428+
done
427429

428430
version=$(checked_pgsql_version)
429431
printf 'Schema version reported after upgrade: %s\n' "${version}"

src/lib/dhcp/option_data_types.h

+28-27
Original file line numberDiff line numberDiff line change
@@ -35,34 +35,35 @@ class BadDataTypeCast : public Exception {
3535

3636
/// @brief Data types of DHCP option fields.
3737
///
38-
/// @warning The order of data types matters: OPT_UNKNOWN_TYPE
39-
/// must always be the last position. Also, OPT_RECORD_TYPE
40-
/// must be at last but one position. This is because some
41-
/// functions perform sanity checks on data type values using
42-
/// '>' operators, assuming that all values beyond the
43-
/// OPT_RECORD_TYPE are invalid.
44-
enum OptionDataType {
45-
OPT_EMPTY_TYPE,
46-
OPT_BINARY_TYPE,
47-
OPT_BOOLEAN_TYPE,
48-
OPT_INT8_TYPE,
49-
OPT_INT16_TYPE,
50-
OPT_INT32_TYPE,
51-
OPT_UINT8_TYPE,
52-
OPT_UINT16_TYPE,
53-
OPT_UINT32_TYPE,
54-
OPT_ANY_ADDRESS_TYPE,
55-
OPT_IPV4_ADDRESS_TYPE,
56-
OPT_IPV6_ADDRESS_TYPE,
57-
OPT_IPV6_PREFIX_TYPE,
58-
OPT_PSID_TYPE,
59-
OPT_STRING_TYPE,
60-
OPT_TUPLE_TYPE,
61-
OPT_FQDN_TYPE,
38+
/// @warning Do NOT alter existing values to add (or remove) new types.
39+
/// These values are stored by config backend. Altering any existing
40+
/// values will produce code that is incompatiable with pre-existing data.
41+
/// Futhermore, the order of data types matters: OPT_UNKNOWN_TYPE
42+
/// must always be and OPT_RECORD_TYPE must be at second to last.
43+
/// This is because some functions perform sanity checks on data type
44+
/// values using '>' operators, assuming that all values beyond the
45+
enum OptionDataType : int {
46+
OPT_EMPTY_TYPE = 0,
47+
OPT_BINARY_TYPE = 1,
48+
OPT_BOOLEAN_TYPE = 2,
49+
OPT_INT8_TYPE = 3,
50+
OPT_INT16_TYPE = 4,
51+
OPT_INT32_TYPE = 5,
52+
OPT_UINT8_TYPE = 6,
53+
OPT_UINT16_TYPE = 7,
54+
OPT_UINT32_TYPE = 8,
55+
OPT_ANY_ADDRESS_TYPE = 9,
56+
OPT_IPV4_ADDRESS_TYPE = 10,
57+
OPT_IPV6_ADDRESS_TYPE = 11,
58+
OPT_IPV6_PREFIX_TYPE = 12,
59+
OPT_PSID_TYPE = 13,
60+
OPT_STRING_TYPE = 14,
61+
OPT_TUPLE_TYPE = 15,
62+
OPT_FQDN_TYPE = 16,
6263
// Type to be used only internally. Allows convenient notation of the option config.
63-
OPT_INTERNAL_TYPE,
64-
OPT_RECORD_TYPE = 254, // Do not alter this value.
65-
OPT_UNKNOWN_TYPE = 255 // Do not alter this value.
64+
OPT_INTERNAL_TYPE = 17,
65+
OPT_RECORD_TYPE = 254,
66+
OPT_UNKNOWN_TYPE = 255
6667
};
6768

6869
/// @brief Parameters being used to make up an option definition.

src/lib/dhcp/tests/option_definition_unittest.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -2173,7 +2173,7 @@ TEST(OptionDataTypeUtil, typeToString) {
21732173
EXPECT_EQ(OPT_STRING_TYPE, OptionDataTypeUtil::getDataType("string"));
21742174
EXPECT_EQ(OPT_TUPLE_TYPE, OptionDataTypeUtil::getDataType("tuple"));
21752175
EXPECT_EQ(OPT_FQDN_TYPE, OptionDataTypeUtil::getDataType("fqdn"));
2176-
// EXPECT_EQ(OPT_INTERNAL_TYPE, OptionDataTypeUtil::getDataType("internal"));
2176+
EXPECT_EQ(OPT_INTERNAL_TYPE, OptionDataTypeUtil::getDataType("internal"));
21772177
EXPECT_EQ(OPT_RECORD_TYPE, OptionDataTypeUtil::getDataType("record"));
21782178
EXPECT_EQ(OPT_UNKNOWN_TYPE, OptionDataTypeUtil::getDataType("bogus"));
21792179
}
@@ -2196,7 +2196,7 @@ TEST(OptionDataTypeUtil, stringToType) {
21962196
EXPECT_EQ("string", OptionDataTypeUtil::getDataTypeName(OPT_STRING_TYPE));
21972197
EXPECT_EQ("tuple", OptionDataTypeUtil::getDataTypeName(OPT_TUPLE_TYPE));
21982198
EXPECT_EQ("fqdn", OptionDataTypeUtil::getDataTypeName(OPT_FQDN_TYPE));
2199-
// EXPECT_EQ("internal", OptionDataTypeUtil::getDataTypeName(OPT_INTERNAL_TYPE));
2199+
EXPECT_EQ("internal", OptionDataTypeUtil::getDataTypeName(OPT_INTERNAL_TYPE));
22002200
EXPECT_EQ("record", OptionDataTypeUtil::getDataTypeName(OPT_RECORD_TYPE));
22012201
EXPECT_EQ("unknown", OptionDataTypeUtil::getDataTypeName(OPT_UNKNOWN_TYPE));
22022202
}

src/lib/dhcpsrv/testutils/generic_cb_dhcp4_unittest.cc

-1
Original file line numberDiff line numberDiff line change
@@ -3170,7 +3170,6 @@ GenericConfigBackendDHCPv4Test::allOptionDefDataTypes4Test() {
31703170

31713171
ASSERT_TRUE(found_def) << "no option found for " << test_def->getName();
31723172
ASSERT_EQ(*found_def, *test_def);
3173-
std::cout << "option ok for " << found_def->getName() << std::endl;
31743173
}
31753174
}
31763175

src/lib/dhcpsrv/testutils/generic_cb_dhcp6_unittest.cc

-1
Original file line numberDiff line numberDiff line change
@@ -3196,7 +3196,6 @@ GenericConfigBackendDHCPv6Test::allOptionDefDataTypes6Test() {
31963196

31973197
ASSERT_TRUE(found_def) << "no option found for " << test_def->getName();
31983198
ASSERT_EQ(*found_def, *test_def);
3199-
std::cout << "option ok for " << found_def->getName() << std::endl;
32003199
}
32013200
}
32023201

src/share/database/scripts/mysql/dhcpdb_create.mysql

+1
Original file line numberDiff line numberDiff line change
@@ -5984,6 +5984,7 @@ BEGIN
59845984

59855985
ALTER TABLE dhcp6_option_def
59865986
ADD CONSTRAINT fk_option_def_data_type6 FOREIGN KEY (type) REFERENCES option_def_data_type(id);
5987+
SET @disable_audit = 0;
59875988
END IF;
59885989
END $$
59895990
DELIMITER ;

src/share/database/scripts/mysql/upgrade_023_to_024.sh.in

+1
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ BEGIN
111111
112112
ALTER TABLE dhcp6_option_def
113113
ADD CONSTRAINT fk_option_def_data_type6 FOREIGN KEY (type) REFERENCES option_def_data_type(id);
114+
SET @disable_audit = 0;
114115
END IF;
115116
END $$
116117
DELIMITER ;

src/share/database/scripts/pgsql/dhcpdb_create.pgsql

+1
Original file line numberDiff line numberDiff line change
@@ -6445,6 +6445,7 @@ BEGIN
64456445
ALTER TABLE dhcp6_option_def
64466446
ADD CONSTRAINT fk_option_def_data_type6 FOREIGN KEY (type) REFERENCES option_def_data_type(id);
64476447

6448+
PERFORM set_config('kea.disable_audit', 'false', false);
64486449
RETURN 'UPDATED';
64496450
END;
64506451
$$ LANGUAGE plpgsql;

src/share/database/scripts/pgsql/upgrade_023_to_024.sh.in

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ BEGIN
9393
ALTER TABLE dhcp6_option_def
9494
ADD CONSTRAINT fk_option_def_data_type6 FOREIGN KEY (type) REFERENCES option_def_data_type(id);
9595
96+
PERFORM set_config('kea.disable_audit', 'false', false);
9697
RETURN 'UPDATED';
9798
END;
9899
\$\$ LANGUAGE plpgsql;

0 commit comments

Comments
 (0)