diff --git a/scapy.py b/scapy.py
index c93528d075fb532eac9eb81257fb08af8e80b3a5..93c01ea3c5b535756cfb27edc7cee2a5301555dd 100755
--- a/scapy.py
+++ b/scapy.py
@@ -1595,6 +1595,27 @@ class RandASN1Object(RandField):
return o(map(lambda x:x._fix(n+1), [self.__class__(objlist=self.objlist)]*z))
return ASN1_INTEGER(int(random.gauss(0,1000)))
+class RandDHCPOptions(RandField):
+ def __init__(self, size=None, rndstr=None):
+ if size is None:
+ size = RandNumExpo(0.05)
+ self.size = size
+ if rndstr is None:
+ rndstr = RandBin(RandNum(0,255))
+ self.rndstr=rndstr
+ self._opts = DHCPOptions.values()
+ self._opts.remove("pad")
+ self._opts.remove("end")
+ def _fix(self):
+ op = []
+ for k in range(self.size):
+ o = random.choice(self._opts)
+ if type(o) is str:
+ op.append((o,self.rndstr*1))
+ else:
+ op.append((o.name, o.randval()._fix()))
+ return op
+
# Automatic timestamp