Browse Source

[3555] PgSQL update after Lease4->hwaddr_ type changed.

Tomek Mrugalski 10 years ago
parent
commit
ed2c9be55a
1 changed files with 12 additions and 6 deletions
  1. 12 6
      src/lib/dhcpsrv/pgsql_lease_mgr.cc

+ 12 - 6
src/lib/dhcpsrv/pgsql_lease_mgr.cc

@@ -607,17 +607,17 @@ public:
                         (static_cast<uint32_t>(lease->addr_));
             bind_array.add(addr_str_);
 
-            if (!lease->hwaddr_.empty()) {
+            if (lease->hwaddr_ && !lease->hwaddr_->hwaddr_.empty()) {
                 // PostgreSql does not provide MAX on variable length types
                 // so we have to enforce it ourselves.
-                if (lease->hwaddr_.size() > HWAddr::MAX_HWADDR_LEN) {
+                if (lease->hwaddr_->hwaddr_.size() > HWAddr::MAX_HWADDR_LEN) {
                         isc_throw(DbOperationError, "Hardware address length : "
-                                  << lease_->hwaddr_.size()
+                                  << lease_->hwaddr_->hwaddr_.size()
                                   << " exceeds maximum allowed of: "
                                   << HWAddr::MAX_HWADDR_LEN);
                 }
 
-                bind_array.add(lease->hwaddr_);
+                bind_array.add(lease->hwaddr_->hwaddr_);
             } else {
                 bind_array.add("");
             }
@@ -683,7 +683,10 @@ public:
 
             hostname_ = getRawColumnValue(r, row, HOSTNAME_COL);
 
-            return (Lease4Ptr(new Lease4(addr4_, hwaddr_buffer_, hwaddr_length_,
+            HWAddrPtr hwaddr(new HWAddr(hwaddr_buffer_, hwaddr_length_,
+                                        HTYPE_ETHER));
+
+            return (Lease4Ptr(new Lease4(addr4_, hwaddr,
                                          client_id_buffer_, client_id_length_,
                                          valid_lifetime_, 0, 0, cltt_,
                                          subnet_id_, fqdn_fwd_, fqdn_rev_,
@@ -865,10 +868,13 @@ public:
 
             hostname_ = getRawColumnValue(r, row, HOSTNAME_COL);
 
+            /// @todo: implement this in #3557.
+            HWAddrPtr hwaddr;
+
             Lease6Ptr result(new Lease6(lease_type_, addr, duid_ptr, iaid_,
                                         pref_lifetime_, valid_lifetime_, 0, 0,
                                         subnet_id_, fqdn_fwd_, fqdn_rev_,
-                                        hostname_, prefix_len_));
+                                        hostname_, hwaddr, prefix_len_));
             result->cltt_ = cltt_;
             return (result);
         } catch (const std::exception& ex) {