From: Marcin Siodelski Date: Thu, 25 Aug 2016 16:18:07 +0000 (+0200) Subject: [master] Merge branch 'trac4552' X-Git-Tag: trac4631_base~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b79fe005dd77328ea7c596fc6886f8fb838d1cf;p=thirdparty%2Fkea.git [master] Merge branch 'trac4552' --- 9b79fe005dd77328ea7c596fc6886f8fb838d1cf diff --cc src/lib/dhcpsrv/mysql_host_data_source.cc index 622b0641bb,7421facd5a..3dde4c4c04 --- a/src/lib/dhcpsrv/mysql_host_data_source.cc +++ b/src/lib/dhcpsrv/mysql_host_data_source.cc @@@ -1930,33 -2051,11 +2050,34 @@@ TaggedStatementArray tagged_statements {MySqlHostDataSourceImpl::GET_VERSION, "SELECT version, minor FROM schema_version"}, - // Marks the end of the statements table. - {MySqlHostDataSourceImpl::NUM_STATEMENTS, NULL} -}; + // Inserts a host into the 'hosts' table. + {MySqlHostDataSourceImpl::INSERT_HOST, + "INSERT INTO hosts(host_id, dhcp_identifier, dhcp_identifier_type, " + "dhcp4_subnet_id, dhcp6_subnet_id, ipv4_address, hostname, " - "dhcp4_client_classes, dhcp6_client_classes) " - "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"}, ++ "dhcp4_client_classes, dhcp6_client_classes, dhcp4_next_server, " ++ "dhcp4_server_hostname, dhcp4_boot_file_name) " ++ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"}, -}; // end anonymouse namespace + // Inserts a single IPv6 reservation into 'reservations' table. + {MySqlHostDataSourceImpl::INSERT_V6_RESRV, + "INSERT INTO ipv6_reservations(address, prefix_len, type, " + "dhcp6_iaid, host_id) " + "VALUES (?,?,?,?,?)"}, + + // Inserts a single DHCPv4 option into 'dhcp4_options' table. + // Using fixed scope_id = 3, which associates an option with host. + {MySqlHostDataSourceImpl::INSERT_V4_OPTION, + "INSERT INTO dhcp4_options(option_id, code, value, formatted_value, space, " + "persistent, dhcp_client_class, dhcp4_subnet_id, host_id, scope_id) " + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 3)"}, + + // Inserts a single DHCPv6 option into 'dhcp6_options' table. + // Using fixed scope_id = 3, which associates an option with host. + {MySqlHostDataSourceImpl::INSERT_V6_OPTION, + "INSERT INTO dhcp6_options(option_id, code, value, formatted_value, space, " + "persistent, dhcp_client_class, dhcp6_subnet_id, host_id, scope_id) " + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 3)"}} +}; MySqlHostDataSourceImpl:: MySqlHostDataSourceImpl(const MySqlConnection::ParameterMap& parameters) diff --cc src/lib/dhcpsrv/pgsql_host_data_source.cc index 2ab5280923,ba886c9d0c..732db7cf1d --- a/src/lib/dhcpsrv/pgsql_host_data_source.cc +++ b/src/lib/dhcpsrv/pgsql_host_data_source.cc @@@ -1416,61 -1475,16 +1453,62 @@@ TaggedStatementArray tagged_statements "ORDER BY h.host_id, o.option_id, r.reservation_id" }, - //PgSqlHostDataSourceImpl::GET_VERSION + // PgSqlHostDataSourceImpl::GET_VERSION // Retrieves MySQL schema version. - {0, + {0, { OID_NONE }, "get_version", "SELECT version, minor FROM schema_version" }, - // Marks the end of the statements table. - {0, { 0 }, NULL, NULL} + // PgSqlHostDataSourceImpl::INSERT_HOST + // Inserts a host into the 'hosts' table. Returns the inserted host id. - {8, ++ {11, + { OID_BYTEA, OID_INT2, + OID_INT4, OID_INT4, OID_INT8, OID_VARCHAR, + OID_VARCHAR, OID_VARCHAR }, + "insert_host", + "INSERT INTO hosts(dhcp_identifier, dhcp_identifier_type, " + " dhcp4_subnet_id, dhcp6_subnet_id, ipv4_address, hostname, " - " dhcp4_client_classes, dhcp6_client_classes) " - "VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING host_id" ++ " dhcp4_client_classes, dhcp6_client_classes, " ++ " dhcp4_next_server, dhcp4_server_hostname, dhcp4_boot_file_name) " ++ "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) RETURNING host_id" + }, + + //PgSqlHostDataSourceImpl::INSERT_V6_RESRV + // Inserts a single IPv6 reservation into 'reservations' table. + {5, + { OID_VARCHAR, OID_INT2, OID_INT4, OID_INT4, OID_INT4 }, + "insert_v6_resrv", + "INSERT INTO ipv6_reservations(address, prefix_len, type, " + " dhcp6_iaid, host_id) " + "VALUES ($1, $2, $3, $4, $5)" + }, + + // PgSqlHostDataSourceImpl::INSERT_V4_HOST_OPTION + // Inserts a single DHCPv4 option into 'dhcp4_options' table. + // Using fixed scope_id = 3, which associates an option with host. + {6, + { OID_INT2, OID_BYTEA, OID_TEXT, + OID_VARCHAR, OID_BOOL, OID_INT8}, + "insert_v4_host_option", + "INSERT INTO dhcp4_options(code, value, formatted_value, space, " + " persistent, host_id, scope_id) " + "VALUES ($1, $2, $3, $4, $5, $6, 3)" + }, + + // PgSqlHostDataSourceImpl::INSERT_V6_HOST_OPTION + // Inserts a single DHCPv6 option into 'dhcp6_options' table. + // Using fixed scope_id = 3, which associates an option with host. + {6, + { OID_INT2, OID_BYTEA, OID_TEXT, + OID_VARCHAR, OID_BOOL, OID_INT8}, + "insert_v6_host_option", + "INSERT INTO dhcp6_options(code, value, formatted_value, space, " + " persistent, host_id, scope_id) " + "VALUES ($1, $2, $3, $4, $5, $6, 3)" + } +} }; }; // end anonymous namespace diff --cc src/share/database/scripts/mysql/dhcpdb_create.mysql index 80aaf082c2,4031f50cc1..fefebb53e5 --- a/src/share/database/scripts/mysql/dhcpdb_create.mysql +++ b/src/share/database/scripts/mysql/dhcpdb_create.mysql @@@ -465,10 -465,11 +465,15 @@@ ALTER TABLE dhcp6_option ADD CONSTRAINT fk_dhcp6_option_scope FOREIGN KEY (scope_id) REFERENCES dhcp_option_scope (scope_id); +# Add UNSIGNED to reservation_id +ALTER TABLE ipv6_reservations + MODIFY reservation_id INT UNSIGNED NOT NULL AUTO_INCREMENT; + + # Add columns holding reservations for siaddr, sname and file fields + # carried within DHCPv4 message. + ALTER TABLE hosts ADD COLUMN dhcp4_next_server INT UNSIGNED NULL; + ALTER TABLE hosts ADD COLUMN dhcp4_server_hostname VARCHAR(64) NULL; + ALTER TABLE hosts ADD COLUMN dhcp4_boot_file_name VARCHAR(128) NULL; # Update the schema version number UPDATE schema_version