new_contents: import sys
  import os
  
  # Should be removed 
  # TBD fix this 
  CURRENT_PATH = os.path.dirname(os.path.realpath(__file__))
  API_PATH     = os.path.join(CURRENT_PATH, "../../api/stl")
  sys.path.insert(0, API_PATH)
  
  from scapy.all import *
  from trex_stl_api import *
  
  class STLS1(object):
  
      def __init__ (self):
          self.max_pkt_size_l3  =9*1024;
  
      def create_stream (self):
  
          # pkt 
          p_l2  = Ether();
          p_l3  = IP(src="16.0.0.1",dst="48.0.0.1")
          p_l4  = UDP(dport=12,sport=1025)
          pyld_size = max(0, self.max_pkt_size_l3 - len(p_l3/p_l4));
          base_pkt = p_l2/p_l3/p_l4/('\x55'*(pyld_size))
  
          l3_len_fix =-(len(p_l2));
          l4_len_fix =-(len(p_l2/p_l3));
  
  
          # vm
          vm = CTRexScRaw( [ CTRexVmDescFlowVar(name="fv_rand", min_value=64, max_value=len(base_pkt), size=2, op="random"),
                             CTRexVmDescTrimPktSize("fv_rand"), # total packet size
                             CTRexVmDescWrFlowVar(fv_name="fv_rand", pkt_offset= "IP.len", add_val=l3_len_fix), # fix ip len 
                             CTRexVmDescFixIpv4(offset = "IP"),                                # fix checksum
                             CTRexVmDescWrFlowVar(fv_name="fv_rand", pkt_offset= "UDP.len", add_val=l4_len_fix) # fix udp len  
                            ]
                         )
  
          pkt = STLPktBuilder(pkt = base_pkt,
                              vm = vm)
  
          return STLStream(packet = pkt,
                           mode = STLTXCont())
  
  
  
      def get_streams (self, direction = 0):
          # create 1 stream 
          return [ self.create_stream() ]
  
  
  # dynamic load - used for trex console or simulator
  def register():
      return STLS1()
  
  
  
  
subject: add random size stream