Example #1
0
	def choose_data(self,data,offset=None,size=None):
		if self.type&0x0800:
			if self.type==0x0800: return IPv4
			try: return StringSZ._c(size=self._data_size-self._offsetof("data"))
			except AttributeError: return StringSZ
		elif self.type==0x8100: return EtherVlanQ
		else: return LLC._c(size=int(self.type))
Example #2
0
	def _init_new(self,data):
		if len(data)!=4: data=''.join([chr(int(x)) for x in data.split('.')])
		StringSZ._init_new(self,data)
Example #3
0
 def choose_src_route(self, data, offset=None, size=None):
     if (data and offset is None) or self.ctrl.src_route: return self.SrcRoute
     else: return StringSZ._c(size=0)
Example #4
0
 def choose_src64(self, data, offset=None, size=None):
     if (data and offset is None) or self.ctrl.ext_src: return Quad
     else: return StringSZ._c(size=0)
Example #5
0
 def choose_dst_pan(self, data, offset=None, size=None):
     if (data and offset is None) or self.ctrl.intra_pan: return Short
     else: return StringSZ._c(size=0)
Example #6
0
 def choose_src(self, data, offset=None, size=None):
     if (data and offset is None) or self.ctrl.src_mode==2: return Short
     else: return StringSZ._c(size=0)
Example #7
0
 def choose_data(self, data, offset=None, size=None):
     if (data and offset is None) or self.ctrl.type.name=="data":
         return self.dtype
     else: return StringSZ._c(size=0)