Parcourir la source

[4268a] Padded hlen/htype pkt4

Francis Dupont il y a 9 ans
Parent
commit
bc80ce57a5
2 fichiers modifiés avec 12 ajouts et 4 suppressions
  1. 10 2
      src/lib/eval/token.cc
  2. 2 2
      src/lib/eval/token.h

+ 10 - 2
src/lib/eval/token.cc

@@ -163,11 +163,19 @@ TokenPkt4::evaluate(const Pkt& pkt, ValueStack& values) {
             break;
 
         case HLEN:
-            binary.assign(1, pkt4.getHlen());
+            // Pad the uint8_t field to 4 bytes.
+            binary.push_back(0);
+            binary.push_back(0);
+            binary.push_back(0);
+            binary.push_back(pkt4.getHlen());
             break;
 
         case HTYPE:
-            binary.assign(1, pkt4.getHtype());
+            // Pad the uint8_t field to 4 bytes.
+            binary.push_back(0);
+            binary.push_back(0);
+            binary.push_back(0);
+            binary.push_back(pkt4.getHtype());
             break;
 
         default:

+ 2 - 2
src/lib/eval/token.h

@@ -299,8 +299,8 @@ protected:
 /// - ciaddr (client IP address, 4 octets)
 /// - yiaddr ('your' (client) IP address, 4 octets)
 /// - siaddr (next server IP address, 4 octets)
-/// - hlen   (hardware address length, 1 octet)
-/// - htype  (hardware address type, 1 octet)
+/// - hlen   (hardware address length, padded to 4 octets)
+/// - htype  (hardware address type, padded to 4 octets)
 class TokenPkt4 : public Token {
 public: