title: Scapy show2() packet problem
body: <p>I'm trying to create some scapy layers and want them to adapt their size on the fly. I use the following code:</p>
  
  <pre><code>class Foo(Packet):
  name = "Testpacket"
  fields_desc = [
           ByteField("length", None),
           ByteField("byte2", None),
           ByteField("byte3", None),
           ByteField("byte4", None),
           ByteField("byte5", None),
           ByteField("byte6", None),
           ByteField("byte7", None),
           ByteField("byte8", None),
           ByteField("byte9", None),
           ByteField("byte10", None),
           ByteField("byte11", None) 
           ]     
  
  def post_build(self, p, pay): 
      if self.length is None: 
          if self.byte11 is not None: 
              x = 0xa 
          elif self.byte10 is not None: 
              x = 0x9 
          elif self.byte9 is not None: 
              x = 0x8 
          elif self.byte8 is not None: 
              x = 0x7 
          elif self.byte7 is not None: 
              x = 0x6 
          elif self.byte6 is not None: 
              x = 0x5 
          elif self.byte5 is not None: 
              x = 0x4 
          elif self.byte4 is not None: 
              x = 0x3 
          elif self.byte3 is not None: 
              x = 0x2 
          elif self.byte2 is not None: 
              x = 0x1 
              print "byte2 is set, x is %s"%(x,)
          else: 
              x = 0x0 
      p = p[:0] + struct.pack("&gt;b", x)
      p += pay
      return p
  </code></pre>
  
  <p>When I do the following in my scapy interpreter:
  <code>&gt;&gt;&gt; aa=Foo(); aa.byte2=0x14; aa.show2();</code>
  I get: </p>
  
  <pre><code>&gt;&gt;&gt; aa=Foo(); aa.byte2=0x14; aa.show2(); aa.show();
  ###[ Testpacket ]###
    length= 1
    byte2= None
    byte3= None
    byte4= None
    byte5= None
    byte6= None
    byte7= None
    byte8= None
    byte9= None
    byte10= None
    byte11= None
  ###[ Testpacket ]###
    length= None
    byte2= 20
    byte3= None
    byte4= None
    byte5= None
    byte6= None
    byte7= None
    byte8= None
    byte9= None
    byte10= None
    byte11= None
  </code></pre>
  
  <p>Now, according to my understanding, show2() should compute the length of the packet etc. In my case, this should set length <em>and</em> byte2. Unfortunatelly this is not the case. Any idea what I'm doing wrong? I have been searching the bug for several hours now, and I'm out of ideas :-S any suggestion would be welcome.</p>
  
  <p>With best regards</p>