summaryrefslogtreecommitdiff
path: root/maximus
diff options
context:
space:
mode:
authorronciere2008-02-04 13:25:42 +0000
committerronciere2008-02-04 13:25:42 +0000
commit1dbcc4db3ad0ad724e73b04fc1f3129909d004fd (patch)
tree06883ba863e132868b2a0108c11d149a0f551864 /maximus
parent1acba5172ea74a30636edc57f166332d284a49fe (diff)
Received Encrypted MME fields interpretation methods
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@1355 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'maximus')
-rw-r--r--maximus/python/lib/Constants.py1
-rw-r--r--maximus/python/lib/encapsulation.py123
-rw-r--r--maximus/python/lib/mmeScript.py156
-rw-r--r--maximus/python/lib/mmentryFields.py325
-rw-r--r--maximus/python/lib/mmentryMethod.py686
5 files changed, 1010 insertions, 281 deletions
diff --git a/maximus/python/lib/Constants.py b/maximus/python/lib/Constants.py
index b420b0456d..07fff52880 100644
--- a/maximus/python/lib/Constants.py
+++ b/maximus/python/lib/Constants.py
@@ -46,6 +46,7 @@ msduWOatsMft = 1 #MSDU WithOut ATS
msduWatsMft = 2 #MSDU With ATS
mmeMft = 3 #Management Message
+
#MME Interpretation
#--- Station - Central Coordination ---
CC_CCO_APPOINT_REQ = 0x0000 #(See Note #1)
diff --git a/maximus/python/lib/encapsulation.py b/maximus/python/lib/encapsulation.py
index 3cb782a749..3696d09abf 100644
--- a/maximus/python/lib/encapsulation.py
+++ b/maximus/python/lib/encapsulation.py
@@ -14,9 +14,14 @@ class EncapsulatedMme():
odaField = pack('Q',oda)[0:6]
#createOda creates the Original Destination Address Field in the MME
def createOda(self, myOda=None):
- if myOda!=None:
- self.oda=myOda
- self.odaField = pack('Q',self.oda)[0:6]
+ try:
+ if myOda!=None:
+ self.oda=myOda
+ self.odaField = pack('Q',self.oda)[0:6]
+ except:
+ if myOda!=None:
+ self.odaField=myOda
+ self.oda = unpack('Q',self.odaField+"\x00\x00")[0]
print "oda = "+hex(self.oda)
#Original source address in the MME is a 6 Bytes field
@@ -25,37 +30,45 @@ class EncapsulatedMme():
osaField = pack('Q',osa)[0:6]
#createOsa creates the Original Destination Address Field in the MME
def createOsa(self, myOsa=None):
- if myOsa!=None:
- self.osa=myOsa
- self.osaField = pack('Q',self.osa)[0:6]
+ try:
+ if myOsa!=None:
+ self.osa=myOsa
+ self.osaField = pack('Q',self.osa)[0:6]
+ except:
+ if myOsa!=None:
+ self.osaField=myOsa
+ self.osa = unpack('Q',self.osaField+"\x00\x00")[0]
print "osa = "+hex(self.osa)
#VLAN Tag in the MME is an optional 4 Bytes field
# by convention if vlanTag = 0, there is no VLAN Tag Field in the MME
- vlanTag = 0
+ vlanTag = 0x00000000
vlanTagField = pack('I',vlanTag)
#createVlanTag creates the otional VLAN Tag Field in The MME
def createVlanTag(self, myVlanTag=None):
- if myVlanTag!=None:
- self.vlanTag=myVlanTag
- if self.vlanTag == 0:
- self.vlanTagFielf = ""
- else:
+ try:
+ if myVlanTag!=None:
+ self.vlanTagField=myVlanTag
+ self.vlanTag = unpack('I',self.vlanTagField)[0]
+ except:
+ if myVlanTag!=None:
+ self.vlanTag=myVlanTag
self.vlanTagField = pack('I',self.vlanTag)
print "vlanTag = "+hex(self.vlanTag)
- #mtype in the MME is a 2 Bytes Field with Bytes inversion : LSB <-> MSB
- mtype = 0x88e1 #Default IEEE value
- mtype = ((mtype%pow(2,8))*pow(2,8))+(mtype/pow(2,8)) #Bytes inversion
+ #mtype in the MME is a 2 Bytes Field
+ mtype = 0xe188 #Default IEEE value
mtypeField = pack('H',mtype)
#createMtype creates the MTYPE Field in the MME
def createMtype(self, myMtype=None):
- if myMtype!=None:
- self.mtype=myMtype
- #Bytes inversion
- #self.mtype=(self.mtype%pow(2,8))*pow(2,8)+self.mtype/pow(2,8)
- #Field creation
- self.mtypeField = pack('H',self.mtype)
+ try:
+ if myMtype!=None:
+ self.mtype=myMtype
+ self.mtypeField = pack('H',self.mtype)
+ except:
+ if myMtype!=None:
+ self.mtypeField=myMtype
+ self.mtype = unpack('H',self.mtypeField)[0]
print "mtype = "+hex(self.mtype)
#MMV in the MME is a 1 Byte Field
@@ -66,9 +79,14 @@ class EncapsulatedMme():
mmvField = pack('B',mmv)
#createMmv creates the MMV Field in the MME
def createMmv(self, myMmv=None):
- if myMmv!=None:
- self.mmv=myMmv
- self.mmvField = pack('B',self.mmv)
+ try:
+ if myMmv!=None:
+ self.mmv=myMmv
+ self.mmvField = pack('B',self.mmv)
+ except:
+ if myMmv!=None:
+ self.mmvField=myMmv
+ self.mmv = unpack('B',self.mmvField)[0]
print "mmv = "+hex(self.mmv)
#MMTYPE in the MME is a 2 Bytes Field
@@ -78,9 +96,14 @@ class EncapsulatedMme():
mmtypeField = pack('H',mmtype)
#createMmtype creates the MMTYPE Field in the MME
def createMmtype(self, myMmtype=None):
- if myMmtype!=None:
- self.mmtype=myMmtype
- self.mmtypeField = pack('H',self.mmtype)
+ try:
+ if myMmtype!=None:
+ self.mmtype=myMmtype
+ self.mmtypeField = pack('H',self.mmtype)
+ except:
+ if myMmtype!=None:
+ self.mmtypeField=myMmtype
+ self.mmtype = unpack('H',self.mmtypeField)[0]
print "mmtype = "+hex(self.mmtype)
#FMI in the MME is a 2 Bytes Field composed by :
@@ -99,17 +122,31 @@ class EncapsulatedMme():
#First or Only fragment FMI Field
fmiField = pack('H',fmi)
#creatFmi creates the FMI Field in the MME
- def createFmi(self, myNfmi=None, myFnMi=None, myFmsn=None):
- if myNfmi!=None:
- self.nfMi=myNfmi
- if myFnMi!=None:
- self.fnMi=myFnMi
- if myFmsn!=None:
- self.fmsn=myFmsn
- #FMI computation
- self.fmi=self.nfMi*pow(2,8+4)+self.fnMi*pow(2,8)+self.fmsn
- #FMI Field creation
- self.fmiField = pack('H',self.fmi)
+ def createFmi(self, myNfmi=None, myFnMi=None, myFmsn=None, myFmi=None):
+ if myFmi!=None:
+ try:
+ self.fmi = myFmi
+ self.fmiField = pack('H',self.fmi)
+ self.fmsn = self.fmi%pow(2,8)
+ self.fnMi = (self.fmi/pow(2,8))%pow(2,4)
+ self.nfMi = self.fmi/pow(2,12)
+ except:
+ self.fmiField = myFmi
+ self.fmi = unpack('H',self.fmiField)[0]
+ self.fmsn = self.fmi%pow(2,8)
+ self.fnMi = (self.fmi/pow(2,8))%pow(2,4)
+ self.nfMi = self.fmi/pow(2,12)
+ else:
+ if myNfmi!=None:
+ self.nfMi=myNfmi
+ if myFnMi!=None:
+ self.fnMi=myFnMi
+ if myFmsn!=None:
+ self.fmsn=myFmsn
+ #FMI computation
+ self.fmi=self.nfMi*pow(2,8+4)+self.fnMi*pow(2,8)+self.fmsn
+ #FMI Field creation
+ self.fmiField = pack('H',self.fmi)
print "nfMi = "+hex(self.nfMi)
print "fnMi = "+hex(self.fnMi)
print "fmsn = "+hex(self.fmsn)
@@ -130,6 +167,15 @@ class EncapsulatedMme():
if myEncapsulatedMmEntry!=None:
self.encapsulatedMmEntry=myEncapsulatedMmEntry
print "encapsulatedMmEntry = "+self.encapsulatedMmEntry
+ self.createOda(myOda=self.encapsulatedMmEntry[0:6])
+ self.createOsa(myOsa=self.encapsulatedMmEntry[6:12])
+ self.createVlanTag(myVlanTag=self.encapsulatedMmEntry[12:16])
+ self.createMtype(myMtype=self.encapsulatedMmEntry[16:18])
+ self.createMmv(myMmv=self.encapsulatedMmEntry[18:19])
+ self.createMmtype(myMmtype=self.encapsulatedMmEntry[19:21])
+ self.createFmi(myFmi=self.encapsulatedMmEntry[21:23])
+ self.createMmentry(myMmentry=self.encapsulatedMmEntry[23:])
+ return self.mmentryField
else:
print "encapsulatedMmEntry :"
self.createOda(myOda)
@@ -141,6 +187,7 @@ class EncapsulatedMme():
self.createFmi(myNfmi, myFnMi, myFmsn)
self.createMmentry(myMmentry)
self.encapsulatedMmEntry = self.odaField + self.osaField + self.vlanTagField + self.mtypeField + self.mmvField + self.mmtypeField + self.fmiField + self.mmentryField
+ return self.encapsulatedMmEntry
diff --git a/maximus/python/lib/mmeScript.py b/maximus/python/lib/mmeScript.py
index 2817d0dc18..141cfdc39c 100644
--- a/maximus/python/lib/mmeScript.py
+++ b/maximus/python/lib/mmeScript.py
@@ -1,4 +1,4 @@
-
+# -*- coding:Utf-8 -*-
import sys
sys.path.append('./test')
@@ -17,6 +17,8 @@ from mmentryMethod import *
from fcVfFields import *
from maximus.macframe.macframe import *
from binascii import * #binascii library is used : crc32(),
+from encapsulation import *
+
# Instantiate a Maximus object and initialize it.
maximus = Maximus()
@@ -29,46 +31,48 @@ myStaA = maximus.create_sta()
fcall1 = maximus.create_fcall('set_tonemask')
fcall1.send(myStaA)
+def create_fcall_128():
+ # Create a fcall for an MPDU containing one PB of 128 octets
+ fc_mode = 2 # PHY_FC_MODE_AV_1
+ short_ppdu = False
+ mod = 2 # PHY_MOD_MINI_ROBO
+ fecrate = 0 # PHY_FEC_RATE_1_2
+ pb_size = 0 # PHY_PB_SIZE_136
+ gil = 1 # PHY_GIL_567
+ pb_nb = 1
+ fcall_128 = maximus.create_fcall('prepare_rx')
+ fcall_128.add_param_ushort("fc_mode", fc_mode)
+ fcall_128.add_param_bool("short_ppdu", short_ppdu)
+ fcall_128.add_param_ushort("mod", mod)
+ fcall_128.add_param_ushort("fecrate", fecrate)
+ fcall_128.add_param_ushort("pb_size", pb_size)
+ fcall_128.add_param_ushort("gil", gil)
+ fcall_128.add_param_ushort("pb_nb", pb_nb)
+ return fcall_128
+
# Send an MPDU containing one PB of 128 octets
-fcall2 = maximus.create_fcall('prepare_rx')
-fc_mode = 2 # PHY_FC_MODE_AV_1
-fcall2.add_param_ushort("fc_mode", fc_mode)
-fcall2.add_param_bool("short_ppdu", False)
-mod = 2 # PHY_MOD_MINI_ROBO
-fcall2.add_param_ushort("mod", mod)
-fecrate = 0 # PHY_FEC_RATE_1_2
-fcall2.add_param_ushort("fecrate", fecrate)
-pb_size = 0 # PHY_PB_SIZE_136
-fcall2.add_param_ushort("pb_size", pb_size)
-gil = 1 # PHY_GIL_567
-fcall2.add_param_ushort("gil", gil)
-pb_nb = 1
-fcall2.add_param_ushort("pb_nb", pb_nb)
-fcall2.send(myStaA)
+fcall_128 = create_fcall_128()
+fcall_128.send(myStaA)
+
+# Create MM Entry Data
+mmentryMethod = MmentryMethod()
+mmentryMethod.createCC_CCO_APPOINT_REQ_MMENTRY(myReqType=0, myMacAddress=0x414243444546)
+
+# Create MME
+myMme = MME()
+mmentryMethod.createCM_ENCRYPTED_PAYLOAD_IND_MMENTRY(myOda=staAAddress, myOsa=maxAddress, myMmtype=mmentryMethod.mmentryFields.mmtype)
+myMme.set_mmentry(mmentryMethod.mmentryFields.mmentry)
# Create MME Header
myMmHeader = MMHeader()
myMmHeader.set_oda(staAAddress)
myMmHeader.set_osa(maxAddress)
-myMmHeader.set_vlantag(0)
-#myMmHeader.set_mmtype(CC_CCO_APPOINT_REQ)
-myMmHeader.set_mmtype(CM_ENCRYPTED_PAYLOAD_IND)
+myMmHeader.set_vlantag(0) #In Maxilmus, VLanTag is always present
+myMmHeader.set_mmtype(mmentryMethod.mmentryFields.mmtype)
myMmHeader.set_mmv(0)
myMmHeader.set_fmi(int(0+0*pow(2,4)))
-
-# Create MM Entry Data
-mmentryMethod = MmentryMethod()
-myMmentry = mmentryMethod.createCC_CCO_APPOINT_REQ_MMENTRY(myReqType=0, myMacAddress=0x414243444546)
-
-# Create MME
-myMme = MME()
-myEncryptedMme=mmentryMethod.createCM_ENCRYPTED_PAYLOAD_IND_MMENTRY(myOda=staAAddress, myOsa=maxAddress, myMmtype=CC_CCO_APPOINT_REQ, myMmentry=myMmentry)
-myMme.set_mmentry(myEncryptedMme)
myMme.set_mmheader(myMmHeader)
-#myMme.send(maximus)
-
-
# Create Frame Control
myFc_AV = FC_AV()
myFcVfFields = FcVfFields()
@@ -82,20 +86,26 @@ myFc_AV.set_fccs_av(myFcVfFields.fccs_AV)
# Create MAC Frame Header
myMacFrameHeader = MACFrameHeader()
myMacFrameHeader.set_mft(mmeMft)
-myMacFrameHeader.set_mfl(59) #=59 with the MME CC_CCO_APPOINT.REQ
+myMacFrameHeader.set_mfl(mmentryMethod.mmentryFields.mmeMfl)
#Create mac frame
myMacFrame = MACFrame()
myMacFrame.set_fc_av(myFc_AV)
myMacFrame.set_macframeheader(myMacFrameHeader)
myMacFrame.set_ats(None)
-myMacFrame.set_confounder(randrange(0,pow(2,32)-1,1))
-myMacFrame.set_icv(unpack('I',pack('i',crc32(myMacFrame.get_msdu())))[0])
+confunder = randrange(0,pow(2,32)-1,1)
myMacFrame.set_msdu(myMme)
+myMacFrame.set_confounder(confunder)
+icv = unpack('I',pack('i',crc32(myMacFrame.get_msdu())))[0]
+myMacFrame.set_icv(icv)
+
+
+
myMacFrame.set_iv(myFcVfFields.iv_SOF) #IV_SOF NOT IV !!!
myMacFrame.set_nek(myFcVfFields.nekField)
-
+print hex(unpack('H',myMmHeader.get()[19:21])[0])
+print hex(myMmHeader.get_mmtype())
@@ -103,20 +113,84 @@ myMacFrame.set_nek(myFcVfFields.nekField)
myMacFrame.send(maximus)
+rsp1 = recv(maximus) #PB Objects list
+i=0
+rsp1 = rsp1[0].get_pblist()
+print rsp1
+rsp1 = rsp1[0]
+rsp2 = []
+while i < len(rsp1) :
+ rsp2.append(hex(unpack('B',rsp1[i])[0]))
+ i=i+1
+print rsp2
+
+print "macFrameHeader :"
+print "Donné à Maximus :"
+print hex(int(mmeMft+pow(2,2)*mmentryMethod.mmentryFields.mmeMfl))
+print "Enregistré par Maximus :"
+print hex(unpack('H',myMacFrameHeader.get())[0])
+print "Réceptionné :"
+myReceivedMacFrameHeader = hex(unpack('H',rsp1[0:2])[0])
+print myReceivedMacFrameHeader
+
+
+print "confunder :"
+print "Donné à Maximus :"
+print hex(confunder)
+print "Enregistré par Maximus :"
+print hex(unpack('I',myMacFrame.get_confounder())[0])
+print "Réceptionné :"
+myReceivedConfunder = hex(unpack('I',rsp1[2:6])[0])
+print myReceivedConfunder
+
+
+#print "oda :"
+#print "Donné à Maximus :"
+#print pack('Q',staAAddress)[0:6]
+#print hex(staAAddress)
+#print "Enregistré par Maximus :"
+#print myMmHeader.get()[0:6]
+#print hex(unpack('Q',myMmHeader.get()[0:6]+"\x00\x00")[0])
+#print "Réceptionné :"
+#print rsp1[6:12]
+#print hex(unpack('Q',rsp1[6:12]+"\x00\x00")[0])
+
+
+#print "osa :"
+#print "Donné à Maximus :"
+#print pack('Q',maxAddress)[0:6]
+#print hex(maxAddress)
+#print "Enregistré par Maximus :"
+#print myMmHeader.get()[6:12]
+#print hex(unpack('Q',myMmHeader.get()[6:12]+"\x00\x00")[0])
+#print "Réceptionné :"
+#print rsp1[12:18]
+#print hex(unpack('Q',rsp1[12:18]+"\x00\x00")[0])
+
+print len(rsp1)
+
+#while rsp1[len(rsp1)-1] == '\x00':
+ #rsp1 = rsp1[:len(rsp1)-1]
+
+rsp1 = rsp1[:len(rsp1)-27]
+print len(rsp1)
+
+a=EncapsulatedMme()
+mmEntryData = a.createEncapsulatedMmEntry(myEncapsulatedMmEntry=rsp1[6:])
+mmentryMethod.createCM_ENCRYPTED_PAYLOAD_IND_MMENTRY(myEncryptedFields=mmEntryData)
+
+print "coucou"
+
+myStaA.remove()
+
-#macFrame.sendnrecv(maximus, fc_mode=0, short_ppdu=0, mod=0, file=None, filter=None, timeout=None, count=1)
-#fc_mode=0 un symbol par defaut
-#mod=0 ROBO par defaut
-#short_ppdu=0 DATA a suivre par defaut
-print "coucou"
-myStaA.remove() \ No newline at end of file
diff --git a/maximus/python/lib/mmentryFields.py b/maximus/python/lib/mmentryFields.py
index 6bdf0ffd9a..504bd6c866 100644
--- a/maximus/python/lib/mmentryFields.py
+++ b/maximus/python/lib/mmentryFields.py
@@ -12,6 +12,7 @@ from Constants import * #Constants library is used : classifierRuleSize[], MAX_T
from binascii import * #binascii library is used : crc32(),
from bmiMethod import *
from encapsulation import *
+from Python_AES import *
#CINFO identifies the attributes of the Connection and the MAC and PAL
@@ -801,6 +802,12 @@ class GlidsInfo():
#MmentryFields lists all fields existing in every MMENTRY
class MmentryFields():
+ #MMENTRY
+ mmentry = ""
+
+ #MMTYPE
+ mmtype = 0
+
#Request Type
reqType = 0 #0 is the default processed value
reqTypeField = pack('B',reqType)
@@ -1531,60 +1538,96 @@ class MmentryFields():
peks = 0x0F #Not encripted by default
peksField = pack('B',peks)
def createPeks(self, myPeks=None):
- if myPeks!=None:
- self.peks=myPeks
- self.peksField = pack('B',self.peks)
+ try:
+ if myPeks!=None:
+ self.peks=myPeks
+ self.peksField = pack('B',self.peks)
+ except:
+ if myPeks!=None:
+ self.peksField=myPeks
+ self.peks = unpack('B',self.peksField)[0]
print "peks = "+hex(self.peks)
#AVLN Status
avlnStatus = 0
avlnStatusField = pack('B',avlnStatus)
def createAvlnStatus(self, myAvlnStatus=None):
- if myAvlnStatus!=None:
- self.avlnStatus=myAvlnStatus
- self.avlnStatusField = pack('B',self.avlnStatus)
+ try:
+ if myAvlnStatus!=None:
+ self.avlnStatus=myAvlnStatus
+ self.avlnStatusField = pack('B',self.avlnStatus)
+ except:
+ if myAvlnStatus!=None:
+ self.avlnStatusField=myAvlnStatus
+ self.avlnStatus = unpack('B',self.avlnStatusField)[0]
print "avlnStatus = "+hex(self.avlnStatus)
#Protocol ID
pid = 0
pidField = pack('B',pid)
def createPid(self, myPid=None):
- if myPid!=None:
- self.pid=myPid
- self.pidField = pack('B',self.pid)
+ try:
+ if myPid!=None:
+ self.pid=myPid
+ self.pidField = pack('B',self.pid)
+ except:
+ if myPid!=None:
+ self.pidField=myPid
+ self.pid = unpack('B',self.pidField)[0]
print "pid = "+hex(self.pid)
#Protocol Run Number
prn = randrange(0,pow(2,16)-1,1)
prnField = pack('H',prn)
def createPrn(self, myPrn=None):
- if myPrn!=None:
- self.prn=myPrn
- else:
- self.prn=randrange(0,pow(2,16)-1,1)
- self.prnField = pack('H',self.prn)
+ try:
+ if myPrn!=None:
+ self.prn=myPrn
+ else:
+ self.prn=randrange(0,pow(2,16)-1,1)
+ self.prnField = pack('H',self.prn)
+ except:
+ if myPrn!=None:
+ self.prnField=myPrn
+ else:
+ self.prnField=pack('H',randrange(0,pow(2,16)-1,1))
+ self.prn = unpack('H',self.prnField)[0]
print "prn = "+hex(self.prn)
#Protocol Message Number
pmn = 0
pmnField = pack('B',pmn)
def createPmn(self, myPmn=None, reset=False):
- if myPmn!=None:
- self.pmn=myPmn
- elif reset==True:
- self.pmn=0
- else:
- self.pmn=self.pmn + 1
- self.pmnField = pack('B',self.pmn)
+ try:
+ if myPmn!=None:
+ self.pmn=myPmn
+ elif reset==True:
+ self.pmn=0
+ else:
+ self.pmn=self.pmn + 1
+ self.pmnField = pack('B',self.pmn)
+ except:
+ if myPmn!=None:
+ self.pmnField=myPmn
+ elif reset==True:
+ self.pmnField=pack('B',0)
+ else:
+ self.pmnField=pack('B',self.pmn + 1)
+ self.pmn = unpack('B',self.pmnField)[0]
print "pmn = "+hex(self.pmn)
#Key Type
keyType = 5 #No key by default
keyTypeField = pack('B',keyType)
def createKeyType(self, myKeyType=None):
- if myKeyType!=None:
- self.keyType=myKeyType
- self.keyTypeField = pack('B',self.keyType)
+ try:
+ if myKeyType!=None:
+ self.keyType=myKeyType
+ self.keyTypeField = pack('B',self.keyType)
+ except:
+ if myKeyType!=None:
+ self.keyTypeField=myKeyType
+ self.keyType = unpack('B',self.keyTypeField)[0]
print "keyType = "+hex(self.keyType)
#My Nonce
@@ -2155,33 +2198,52 @@ class MmentryFields():
iv = randrange(0,pow(2,128)-1,1) #Random by default
ivField = pack('Q',iv%pow_2_64)+pack('Q',iv/pow_2_64)
def createIv(self, myIv=None, myRandomIv=False):
- if myIv!=None:
- self.iv=myIv
- elif myRandomIv==True :
- self.iv=randrange(0,pow(2,16*8)-1,1)
- self.ivField = pack('Q',self.iv%pow_2_64)+pack('Q',self.iv/pow_2_64)
+ try:
+ if myIv!=None:
+ self.iv=myIv
+ elif myRandomIv==True :
+ self.iv=randrange(0,pow(2,16*8)-1,1)
+ self.ivField = pack('Q',self.iv%pow_2_64)+pack('Q',self.iv/pow_2_64)
+ except:
+ if myIv!=None:
+ self.ivField=myIv
+ self.iv = unpack('QQ',self.ivField)[0]+unpack('QQ',self.ivField)[1]*pow_2_64
print "iv = "+hex(self.iv)
#Universaly Unique Identifier
- uuid = randrange(0,pow(2,16)-1,1) #Random by default
- uuidField = pack('H',uuid)
+ uuid = randrange(0,pow(2,16*8)-1,1) #Random by default
+ uuidField = pack('Q',uuid%pow_2_64)+pack('Q',uuid/pow_2_64)
def createUuid(self, myUuid=None, myRandomUuid=False):
- if myUuid!=None:
- self.uuid=myUuid
- elif myRandomUuid==True :
- self.uuid=randrange(0,pow(2,16*8)-1,1)
- self.uuidField = pack('Q',self.uuid%pow_2_64)+pack('Q',self.uuid/pow_2_64)
+ try:
+ if myUuid!=None:
+ self.uuid=myUuid
+ elif myRandomUuid==True :
+ self.uuid=randrange(0,pow(2,16*8)-1,1)
+ self.uuidField = pack('Q',self.uuid%pow_2_64)+pack('Q',self.uuid/pow_2_64)
+ except:
+ if myUuid!=None:
+ self.uuidField=myUuid
+ elif myRandomUuid==True :
+ self.uuidFied = pack('Q',randrange(0,pow(2,8*8)-1,1))+pack('Q',randrange(0,pow(2,8*8)-1,1))
+ randrange(0,pow(2,16*8)-1,1)
+ self.uuid = unpack('QQ',self.uuidField)[0] + unpack('QQ',self.uuidField)[1]*pow_2_64
+ #int(unpack('QQ',self.uuidField)[0]+unpack('QQ',self.uuidField)[1]*pow(2,8*8))
print "uuid = "+hex(self.uuid)
#Length of the Random Filler
rfLenEncrypted = 1
rfLenEncryptedField = pack('B',rfLenEncrypted)
def createRfLenEncrypted(self, myRfLenEncrypted=None):
- if myRfLenEncrypted!=None:
- self.rfLenEncrypted = myRfLenEncrypted
- else:
- self.rfLenEncrypted = randrange(0,15,1)
- self.rfLenEncryptedField = pack('B',self.rfLenEncrypted)
+ try:
+ if myRfLenEncrypted!=None:
+ self.rfLenEncrypted = myRfLenEncrypted
+ else:
+ self.rfLenEncrypted = randrange(0,15,1)
+ self.rfLenEncryptedField = pack('B',self.rfLenEncrypted)
+ except:
+ if myRfLenEncrypted!=None:
+ self.rfLenEncryptedField = myRfLenEncrypted
+ self.rfLenEncrypted = unpack('B',self.rfLenEncrypted)[0]
print "rfLenEncrypted = "+hex(self.rfLenEncrypted)
#Encrypted Random Filler
@@ -2189,35 +2251,58 @@ class MmentryFields():
randomFillerEncryptedField = ""
def createRandomFillerEncrypted(self, myRfLenEncrypted=None, myRandomFillerEncrypted=None):
self.createRfLenEncrypted(myRfLenEncrypted)
- if myRandomFillerEncrypted!=None:
- self.randomFillerEncrypted=myRandomFillerEncrypted
- elif self.rfLenEncrypted != 0:
- self.randomFillerEncrypted=randrange(0,pow(2,self.rfLenEncrypted*8)-1,1)
- if self.rfLenEncrypted == 0:
- self.randomFillerEncryptedField = ""
- elif self.rfLenEncrypted <= 8:
- self.randomFillerEncryptedField=pack('Q',self.randomFillerEncrypted)[0:self.rfLenEncrypted]
- elif self.rfLenEncrypted <= 15:
- self.randomFillerEncryptedField=pack('Q',self.randomFillerEncrypted%pow_2_64)+pack('Q',self.randomFillerEncrypted/pow_2_64)[0:self.rfLenEncrypted-8]
- print "randomFillerEncrypted = "+hex(self.randomFillerEncrypted)
+ try:
+ if myRandomFillerEncrypted!=None:
+ self.randomFillerEncrypted=myRandomFillerEncrypted
+ elif self.rfLenEncrypted != 0:
+ self.randomFillerEncrypted=randrange(0,pow(2,self.rfLenEncrypted*8)-1,1)
+ if self.rfLenEncrypted == 0:
+ self.randomFillerEncryptedField = ""
+ self.randomFillerEncrypted=None
+ print "randomFillerEncrypted = None"
+ elif self.rfLenEncrypted <= 8:
+ self.randomFillerEncryptedField=pack('Q',self.randomFillerEncrypted)[0:self.rfLenEncrypted]
+ print "randomFillerEncrypted = "+hex(self.randomFillerEncrypted)
+ elif self.rfLenEncrypted <= 15:
+ self.randomFillerEncryptedField=pack('Q',self.randomFillerEncrypted%pow_2_64)+pack('Q',self.randomFillerEncrypted/pow_2_64)[0:self.rfLenEncrypted-8]
+ print "randomFillerEncrypted = "+hex(self.randomFillerEncrypted)
+ except:
+ if myRandomFillerEncrypted!=None:
+ self.randomFillerEncryptedField=myRandomFillerEncrypted
+ if self.rfLenEncrypted == 0:
+ self.randomFillerEncrypted = None
+ print "randomFillerEncrypted = None"
+ elif self.rfLenEncrypted <= 8:
+ self.randomFillerEncrypted=unpack('QQ',self.randomFillerEncryptedField+"\x00"*(16-self.rfLenEncrypted))[0]
+ print "randomFillerEncrypted = "+hex(self.randomFillerEncrypted)
+ elif self.rfLenEncrypted <= 15:
+ self.randomFillerEncrypted = unpack('QQ',self.randomFillerEncryptedField+"\x00"*(16-self.rfLenEncrypted))[0]+unpack('QQ',self.randomFillerEncryptedField+"\x00"*(16-self.rfLenEncrypted))[1]*pow_2_64
+ print "randomFillerEncrypted = "+hex(self.randomFillerEncrypted)
#Encrypted MM or HLE Payload
mmOrHlePayloadEncryptedField = ""
- def createMmOrHlePayloadEncrypted(self, myOda=None, myOsa=None, myVlanTag=None, myMtype=None, myMmv=None, myMmtype=None, myNfmi=None, myFnMi=None, myFmsn=None, myMmentry=None, myEncapsulatedMmEntry=None, myMmOrHlePayloadEncrypted=None):
- if myMmOrHlePayloadEncrypted!=None:
+ myEncapsulatedMme=EncapsulatedMme()
+ def createMmOrHlePayloadEncrypted(self, myPid=None, myOda=None, myOsa=None, myVlanTag=None, myMtype=None, myMmv=None, myMmtype=None, myNfmi=None, myFnMi=None, myFmsn=None, myMmentry=mmentry, myEncapsulatedMmEntry=None, myMmOrHlePayloadEncrypted=None):
+ if myPid==4:
self.mmOrHlePayloadEncryptedField = myMmOrHlePayloadEncrypted
else:
- self.myEncapsulatedMme=EncapsulatedMme()
- self.myEncapsulatedMme.createEncapsulatedMmEntry(myOda, myOsa, myVlanTag, myMtype, myMmv, myMmtype, myNfmi, myFnMi, myFmsn, myMmentry, myEncapsulatedMmEntry)
- self.mmOrHlePayloadEncryptedField = self.myEncapsulatedMme.encapsulatedMmEntry
+ self.mmOrHlePayloadEncryptedField = self.myEncapsulatedMme.createEncapsulatedMmEntry(myOda, myOsa, myVlanTag, myMtype, myMmv, myMmtype, myNfmi, myFnMi, myFmsn, myMmentry, myEncapsulatedMmEntry)
print "mmOrHlePayloadEncrypted = "+self.mmOrHlePayloadEncryptedField
#Length of Encrypted MM or HLE Payload
lengthForEncryption = len(mmOrHlePayloadEncryptedField)
lengthForEncryptionField = pack('H',lengthForEncryption)
- def createLengthForEncryption(self):
- self.lengthForEncryption = len(self.mmOrHlePayloadEncryptedField)
- self.lengthForEncryptionField = pack('H',self.lengthForEncryption)
+ def createLengthForEncryption(self, myLengthForEncryption=None):
+ if myLengthForEncryption!=None:
+ try:
+ self.lengthForEncryption = myLengthForEncryption
+ self.lengthForEncryptionField = pack('H',self.lengthForEncryption)
+ except:
+ self.lengthForEncryptionField = myLengthForEncryption
+ self.lengthForEncryption = unpack('H',self.lengthForEncryptionField)[0]
+ else:
+ self.lengthForEncryption = len(self.mmOrHlePayloadEncryptedField)
+ self.lengthForEncryptionField = pack('H',self.lengthForEncryption)
print "lengthForEncryption = "+hex(self.lengthForEncryption)
#Encrypted CRC of the MM or HLE Payload
@@ -2225,30 +2310,33 @@ class MmentryFields():
crcEncryptedField = pack('I',crcEncrypted)
def createCrcEncrypted(self, myCrcEncrypted=None):
if myCrcEncrypted!=None:
- self.crcEncrypted = myCrcEncrypted
+ try:
+ self.crcEncryptedField = myCrcEncrypted
+ self.crcEncrypted = unpack('I',self.crcEncryptedField)[0]
+ except:
+ self.crcEncrypted = myCrcEncrypted
+ self.crcEncryptedField = pack('I',self.crcEncrypted)
else:
self.crcEncrypted = unpack('I',pack('i',crc32(self.mmOrHlePayloadEncryptedField)))[0]
- self.crcEncryptedField = pack('I',self.crcEncrypted)
+ self.crcEncryptedField = pack('I',self.crcEncrypted)
print "crcEncrypted = "+hex(self.crcEncrypted)
- #Encrypted PID
- #pidEncrypted = 0x00
- #pidEncryptedField = pack('B',pidEncrypted)
- #def createPidEncrypted(self, myPidEncrypted=None):
- #if myPidEncrypted!=None:
- #self.pidEncrypted = myPidEncrypted
- #self.pidEncryptedField = pack('B',self.pidEncrypted)
- #print "pidEncrypted = "+hex(self.pidEncrypted)
-
#Encrypted PRN
prnEncrypted = 0x4142
prnEncryptedField = pack('H',prnEncrypted)
def createPrnEncrypted(self, myPrnEncrypted=None, myRandomPrn=None):
if myPrnEncrypted!=None:
- self.prnEncrypted = myPrnEncrypted
+ try:
+ self.prnEncrypted = myPrnEncrypted
+ self.prnEncryptedField = pack('H',self.prnEncrypted)
+ except:
+ self.prnEncryptedField = myPrnEncrypted
+ self.prnEncrypted = unpack('H',self.prnEncryptedField)[0]
elif myRandomPrn == True:
self.prnEncrypted = randrange(0,pow(2,16)-1,1)
- self.prnEncryptedField = pack('H',self.prnEncrypted)
+ self.prnEncryptedField = pack('H',self.prnEncrypted)
+ else:
+ self.prnEncryptedField = pack('H',self.prnEncrypted)
print "prnEncrypted = "+hex(self.prnEncrypted)
#Encrypted PMN
@@ -2256,8 +2344,14 @@ class MmentryFields():
pmnEncryptedField = pack('B',pmnEncrypted)
def createPmnEncrypted(self, myPmnEncrypted=None):
if myPmnEncrypted!=None:
- self.pmnEncryptedField = myPmnEncrypted
- self.pmnEncryptedField = pack('B',self.pmnEncrypted)
+ try:
+ self.pmnEncryptedField = myPmnEncrypted
+ self.pmnEncrypted = unpack('B',self.pmnEncryptedField)[0]
+ except:
+ self.pmnEncrypted = myPmnEncrypted
+ self.pmnEncryptedField = pack('B',self.pmnEncrypted)
+ else:
+ self.pmnEncryptedField = pack('B',self.pmnEncrypted)
print "pmnEncrypted = "+hex(self.pmnEncrypted)
#Encrypted Padding
@@ -2270,7 +2364,22 @@ class MmentryFields():
def createPaddingEncrypted(self, myPaddingEncrypted=None):
self.paddingEncryptedSize = (16 - (len(self.randomFillerEncryptedField + self.mmOrHlePayloadEncryptedField + self.crcEncryptedField + self.pidField + self.prnEncryptedField + self.pmnEncryptedField + self.rfLenEncryptedField)%16))%16
if myPaddingEncrypted!=None:
- self.paddingEncrypted = myPaddingEncrypted
+ try:
+ self.paddingEncryptedSize = len(myPaddingEncrypted)
+ self.paddingEncryptedField = myPaddingEncrypted
+ if self.paddingEncryptedSize == 0:
+ self.paddingEncrypted=None
+ elif self.paddingEncryptedSize <= 8:
+ self.paddingEncrypted=unpack('QQ',self.paddingEncryptedField+"\x00"*(16-len(self.paddingEncryptedField)))[0]
+ elif self.paddingEncryptedSize <= 15:
+ self.paddingEncrypted = unpack('QQ',self.paddingEncryptedField+"\x00"*(16-len(self.paddingEncryptedField)))[0] + unpack('QQ',self.paddingEncryptedField+"\x00"*(16-len(self.paddingEncryptedField)))[1]*pow_2_64
+ except:
+ self.paddingEncrypted = myPaddingEncrypted
+ self.paddingEncryptedField=""
+ while myPaddingEncrypted > 0:
+ self.paddingEncryptedField = self.paddingEncryptedField + pack('B',myPaddingEncrypted%256)
+ myPaddingEncrypted = int(myPaddingEncrypted / 256)
+ self.paddingEncryptedSize = len(self.paddingEncryptedField)
elif self.paddingEncryptedSize != 0:
self.paddingEncrypted = randrange(0,pow(2,self.paddingEncryptedSize*8)-1,1)
if self.paddingEncryptedSize == 0:
@@ -2941,9 +3050,61 @@ class MmentryFields():
self.bmiField = self.bmiField + self.behdrField[self.i] + self.bentryField[self.i]
self.i = self.i + 1
-
-
-
-
-
-
+ #MAC Frame Length = MFL
+ mmeMfl = 59 #MFL = 59 by default
+ def createMmeMfl(self, myMmentry=""):
+ self.mmeMfl = len(myMmentry) + 26 #len(mmHeaderWithVLanTag)+len(confunder)-1
+ #In Maximus VLanTag is always present
+ if self.mmeMfl < 59:
+ self.mmeMfl = 59
+ print "mmeMfl = "+hex(self.mmeMfl)
+
+ #AES cryption
+ encryptedFields = ""
+ myEncryption=new(keyField,2,ivField)
+ def createEncryptedFields(self, myIvOrUuid=None, myIvOrUuidRandom=False, myRandomFillerEncrypted=None, myOda=None, myOsa=None, myVlanTag=None, myMtype=None, myMmv=None, myMmtype=None, myNfmi=None, myFnMi=None, myFmsn=None, myMmentry=None, myEncapsulatedMmEntry=None, myMmOrHlePayloadEncrypted=None, myCrcEncrypted=None, myPidEncrypted=None, myPrnEncrypted=None, myRandomPrn=None, myPmnEncrypted=None, myPaddingEncrypted=None, myRfLenEncrypted=None, myKey=None, myEncryptedFields=None):
+ self.myEncryption = new(self.keyField,2,self.ivField)
+ if myEncryptedFields == None:
+ self.createIv(myIvOrUuid, myIvOrUuidRandom)
+ self.createRandomFillerEncrypted(myRfLenEncrypted, myRandomFillerEncrypted)
+ self.createMmOrHlePayloadEncrypted(self.pid, myOda, myOsa, myVlanTag, myMtype, myMmv, myMmtype, myNfmi, myFnMi, myFmsn, myMmentry, myEncapsulatedMmEntry, myMmOrHlePayloadEncrypted)
+ self.createLengthForEncryption()
+ self.createCrcEncrypted(myCrcEncrypted)
+ self.createPrnEncrypted(myPrnEncrypted, myRandomPrn)
+ self.createPmnEncrypted(myPmnEncrypted)
+ self.createPaddingEncrypted(myPaddingEncrypted)
+ self.createKey(myKey)
+ self.encryptedFields = self.randomFillerEncryptedField + self.mmOrHlePayloadEncryptedField + self.crcEncryptedField + self.pidField + self.prnEncryptedField + self.pmnEncryptedField + self.paddingEncryptedField + self.rfLenEncryptedField
+ if self.peks != 0x0F:
+ self.encryptedFields=self.myEncryption.encrypt(self.encryptedFields)
+ return self.ivField + self.lengthForEncryptionField + self.encryptedFields
+ else:
+ self.createKey(myKey)
+ self.encryptedFields = myEncryptedFields
+ self.createIv(myIv = self.encryptedFields[0:16])
+ self.createLengthForEncryption(myLengthForEncryption = self.encryptedFields[16:18])
+ self.encryptedFields=self.encryptedFields[18:]
+ if self.peks != 0x0F:
+ self.myEncryption = new(self.keyField,2,self.ivField)
+ self.encryptedFields=self.myEncryption.decrypt(self.encryptedFields)
+ self.createRandomFillerEncrypted(myRfLenEncrypted = self.encryptedFields[len(self.encryptedFields)-1:], myRandomFillerEncrypted = self.encryptedFields[0:self.rfLenEncrypted])
+ #self.createRandomFillerEncrypted(myRfLenEncrypted = self.encryptedFields[len(self.encryptedFields)-28:len(self.encryptedFields)-27], myRandomFillerEncrypted = self.encryptedFields[0:self.rfLenEncrypted])
+ self.createMmOrHlePayloadEncrypted( myEncapsulatedMmEntry = self.encryptedFields[self.rfLenEncrypted:self.rfLenEncrypted+self.lengthForEncryption] )
+ self.createCrcEncrypted( myCrcEncrypted = self.encryptedFields[self.rfLenEncrypted+self.lengthForEncryption:self.rfLenEncrypted+self.lengthForEncryption+4] )
+ self.createPid( myPid = self.encryptedFields[self.rfLenEncrypted+self.lengthForEncryption+4:self.rfLenEncrypted+self.lengthForEncryption+4+1] )
+ self.createPrnEncrypted( myPrnEncrypted = self.encryptedFields[self.rfLenEncrypted+self.lengthForEncryption+4+1:self.rfLenEncrypted+self.lengthForEncryption+4+1+2] )
+ self.createPmnEncrypted( myPmnEncrypted = self.encryptedFields[self.rfLenEncrypted+self.lengthForEncryption+4+1+2:self.rfLenEncrypted+self.lengthForEncryption+4+1+2+1] )
+ self.createPaddingEncrypted( myPaddingEncrypted = self.encryptedFields[self.rfLenEncrypted+self.lengthForEncryption+4+1+2+1:len(self.encryptedFields)-1] )
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/maximus/python/lib/mmentryMethod.py b/maximus/python/lib/mmentryMethod.py
index 19bbebbb2d..6d3dc204ed 100644
--- a/maximus/python/lib/mmentryMethod.py
+++ b/maximus/python/lib/mmentryMethod.py
@@ -3,7 +3,6 @@
from mmentry import *
from mmentryFields import *
-from Python_AES import *
#MmentryMethod can create every MMENTRY of MME
@@ -32,7 +31,9 @@ class MmentryMethod():
self.mmentryFields.macAddress = 0
self.mmentryFields.createMacAddress(myMacAddress)
self.mmentry.CC_CCO_APPOINT_REQ = self.mmentryFields.reqTypeField + self.mmentryFields.macAddressField
- return self.mmentry.CC_CCO_APPOINT_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_CCO_APPOINT_REQ
+ self.mmentryFields.mmtype = CC_CCO_APPOINT_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_CCO_APPOINT_CNF_MMENTRY creates
@@ -43,7 +44,9 @@ class MmentryMethod():
# - Result
self.mmentryFields.createResult(myResult)
self.mmentry.CC_CCO_APPOINT_CNF = self.mmentryFields.resultField
- return self.mmentry.CC_CCO_APPOINT_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_CCO_APPOINT_CNF
+ self.mmentryFields.mmtype = CC_CCO_APPOINT_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_BACKUP_APPOINT_REQ_MMENTRY creates
@@ -54,7 +57,9 @@ class MmentryMethod():
# - AppointRelease
self.mmentryFields.createAppointRelease(myAppointRelease)
self.mmentry.CC_BACKUP_APPOINT_REQ = self.mmentryFields.appointReleaseField
- return self.mmentry.CC_BACKUP_APPOINT_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_BACKUP_APPOINT_REQ
+ self.mmentryFields.mmtype = CC_BACKUP_APPOINT_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_BACKUP_APPOINT_CNF_MMENTRY creates
@@ -65,7 +70,9 @@ class MmentryMethod():
# - Result
self.mmentryFields.createResult(myResult)
self.mmentry.CC_BACKUP_APPOINT_CNF = self.mmentryFields.resultField
- return self.mmentry.CC_BACKUP_APPOINT_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_BACKUP_APPOINT_CNF
+ self.mmentryFields.mmtype = CC_BACKUP_APPOINT_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_LINK_INFO.REQ has no MMENTRY
@@ -73,7 +80,9 @@ class MmentryMethod():
print "CC_LINK_INFO.REQ ="
#CC_LINK_INFO_REQ_MMENTRY is composed by 0 field :
self.mmentry.CC_LINK_INFO_REQ = ""
- return self.mmentry.CC_LINK_INFO_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_INFO_REQ
+ self.mmentryFields.mmtype = CC_LINK_INFO_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_INFO_CNF_MMENTRY creates
@@ -90,7 +99,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.num:
self.mmentry.CC_LINK_INFO_CNF = self.mmentry.CC_LINK_INFO_CNF + self.mmentryFields.globalLinks[self.i].globalLinkInfo
self.i=self.i+1
- return self.mmentry.CC_LINK_INFO_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_INFO_CNF
+ self.mmentryFields.mmtype = CC_LINK_INFO_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_INFO_IND_MMENTRY creates
@@ -107,7 +118,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.num:
self.mmentry.CC_LINK_INFO_IND = self.mmentry.CC_LINK_INFO_IND + self.mmentryFields.globalLinks[self.i].globalLinkInfo
self.i=self.i+1
- return self.mmentry.CC_LINK_INFO_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_INFO_IND
+ self.mmentryFields.mmtype = CC_LINK_INFO_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_LINK_INFO.RSP has no MMENTRY
@@ -115,7 +128,9 @@ class MmentryMethod():
print "CC_LINK_INFO.RSP ="
#CC_LINK_INFO_RSP_MMENTRY is composed by 0 field :
self.mmentry.CC_LINK_INFO_RSP = ""
- return self.mmentry.CC_LINK_INFO_RSP
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_INFO_RSP
+ self.mmentryFields.mmtype = CC_LINK_INFO_RSP
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_HANDOVER_REQ_MMENTRY creates
@@ -128,7 +143,9 @@ class MmentryMethod():
self.mmentryFields.createSoftHard(mySoftHard)
self.mmentryFields.createReason(myReason)
self.mmentry.CC_HANDOVER_REQ = self.mmentryFields.softHardField + self.mmentryFields.reasonField
- return self.mmentry.CC_HANDOVER_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_HANDOVER_REQ
+ self.mmentryFields.mmtype = CC_HANDOVER_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_HANDOVER_CNF_MMENTRY creates
@@ -139,7 +156,9 @@ class MmentryMethod():
# - Result
self.mmentryFields.createResult(myResult)
self.mmentry.CC_HANDOVER_CNF = self.mmentryFields.resultField
- return self.mmentry.CC_HANDOVER_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_HANDOVER_CNF
+ self.mmentryFields.mmtype = CC_HANDOVER_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_HANDOVER_INFO_IND_MMENTRY creates
@@ -159,7 +178,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.num:
self.mmentry.CC_HANDOVER_INFO_IND = self.mmentry.CC_HANDOVER_INFO_IND + self.mmentryFields.stasInfo[self.i].staInfo
self.i=self.i+1
- return self.mmentry.CC_HANDOVER_INFO_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_HANDOVER_INFO_IND
+ self.mmentryFields.mmtype = CC_HANDOVER_INFO_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_HANDOVER_INFO.RSP has no MMENTRY
@@ -167,7 +188,9 @@ class MmentryMethod():
print "CC_HANDOVER_INFO.RSP ="
#CC_HANDOVER_INFO_RSP_MMENTRY is composed by 0 field :
self.mmentry.CC_HANDOVER_INFO_RSP = ""
- return self.mmentry.CC_HANDOVER_INFO_RSP
+ self.mmentryFields.mmentry = self.mmentry.CC_HANDOVER_INFO_RSP
+ self.mmentryFields.mmtype = CC_HANDOVER_INFO_RSP
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_DISCOVER_LIST.REQ has no MMENTRY
@@ -175,7 +198,9 @@ class MmentryMethod():
print "CC_DISCOVER_LIST.REQ ="
#CC_DISCOVER_LIST_REQ_MMENTRY is composed by 0 field :
self.mmentry.CC_DISCOVER_LIST_REQ = ""
- return self.mmentry.CC_DISCOVER_LIST_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_DISCOVER_LIST_REQ
+ self.mmentryFields.mmtype = CC_DISCOVER_LIST_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_DISCOVER_LIST_CNF_MMENTRY creates
@@ -199,7 +224,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.numNet:
self.mmentry.CC_DISCOVER_LIST_CNF = self.mmentry.CC_DISCOVER_LIST_CNF + self.mmentryFields.networksInfo[self.i].networkInfo
self.i=self.i+1
- return self.mmentry.CC_DISCOVER_LIST_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_DISCOVER_LIST_CNF
+ self.mmentryFields.mmtype = CC_DISCOVER_LIST_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_DISCOVER_LIST_IND_MMENTRY creates
@@ -223,7 +250,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.numNet:
self.mmentry.CC_DISCOVER_LIST_IND = self.mmentry.CC_DISCOVER_LIST_IND + self.mmentryFields.networksInfo[self.i].networkInfo
self.i=self.i+1
- return self.mmentry.CC_DISCOVER_LIST_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_DISCOVER_LIST_IND
+ self.mmentryFields.mmtype = CC_DISCOVER_LIST_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_NEW_REQ_MMENTRY creates
@@ -244,7 +273,9 @@ class MmentryMethod():
self.mmentryFields.createForwardLinkBle(myNumF, myEndTimeF, myIntBleF)
self.mmentryFields.createReverseLinkBle(myNumR, myEndTimeR, myIntBleR)
self.mmentry.CC_LINK_NEW_REQ = self.mmentryFields.initMacAddressField + self.mmentryFields.termMacAddressField + self.mmentryFields.cidField + self.mmentryFields.cspecField + self.mmentryFields.forwardLinkBle.ble + self.mmentryFields.reverseLinkBle.ble
- return self.mmentry.CC_LINK_NEW_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_NEW_REQ
+ self.mmentryFields.mmtype = CC_LINK_NEW_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_NEW_CNF_MMENTRY creates
@@ -265,7 +296,9 @@ class MmentryMethod():
if self.mmentryFields.result == 1 :
self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CC_LINK_NEW_CNF = self.mmentry.CC_LINK_NEW_CNF + self.mmentryFields.proposedCspecField
- return self.mmentry.CC_LINK_NEW_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_NEW_CNF
+ self.mmentryFields.mmtype = CC_LINK_NEW_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_MOD_REQ_MMENTRY creates
@@ -287,7 +320,9 @@ class MmentryMethod():
if self.mmentryFields.glidR in globalId:
self.mmentryFields.createReverseLinkBle(myNumR, myEndTimeR, myIntBleR)
self.mmentry.CC_LINK_MOD_REQ = self.mmentry.CC_LINK_MOD_REQ + self.mmentryFields.reverseLinkBleField
- return self.mmentry.CC_LINK_MOD_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_MOD_REQ
+ self.mmentryFields.mmtype = CC_LINK_MOD_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_MOD_CNF_MMENTRY creates
@@ -304,7 +339,9 @@ class MmentryMethod():
if self.mmentryFields.result == 1 :
self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CC_LINK_MOD_CNF = self.mmentry.CC_LINK_MOD_CNF + self.mmentryFields.proposedCspecField
- return self.mmentry.CC_LINK_MOD_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_MOD_CNF
+ self.mmentryFields.mmtype = CC_LINK_MOD_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_SQZ_REQ_MMENTRY creates
@@ -317,7 +354,9 @@ class MmentryMethod():
self.mmentryFields.createCid(myTei, myLlidF)
self.mmentryFields.createModifiedCspec(self, myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CC_LINK_SQZ_REQ = self.mmentryFields.cidField + self.mmentryFields.modifiedCspecField
- return self.mmentry.CC_LINK_SQZ_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_SQZ_REQ
+ self.mmentryFields.mmtype = CC_LINK_SQZ_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_SQZ_CNF_MMENTRY creates
@@ -334,7 +373,9 @@ class MmentryMethod():
if self.mmentryFields.result == 1 :
self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CC_LINK_SQZ_CNF = self.mmentry.CC_LINK_SQZ_CNF + self.mmentryFields.proposedCspecField
- return self.mmentry.CC_LINK_SQZ_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_SQZ_CNF
+ self.mmentryFields.mmtype = CC_LINK_SQZ_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_REL_REQ_MMENTRY creates
@@ -353,7 +394,9 @@ class MmentryMethod():
if self.mmentryFields.rsc == 1 :
self.mmentryFields.createViolatedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CC_LINK_REL_REQ = self.mmentry.CC_LINK_REL_REQ + self.mmentryFields.violatedCspecField
- return self.mmentry.CC_LINK_REL_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_REL_REQ
+ self.mmentryFields.mmtype = CC_LINK_REL_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LINK_REL_IND_MMENTRY creates
@@ -375,7 +418,9 @@ class MmentryMethod():
elif self.mmentryFields.rsc == 2 :
self.mmentryFields.createViolatedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CC_LINK_REL_IND = self.mmentry.CC_LINK_REL_IND + self.mmentryFields.violatedCspecField
- return self.mmentry.CC_LINK_REL_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_REL_IND
+ self.mmentryFields.mmtype = CC_LINK_REL_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_DETECT_REPORT_REQ_MMENTRY creates
@@ -394,7 +439,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.numGlid:
self.mmentry.CC_DETECT_REPORT_REQ = self.mmentry.CC_DETECT_REPORT_REQ + self.mmentryFields.glids.glidsField[self.i]
self.i=self.i+1
- return self.mmentry.CC_DETECT_REPORT_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_DETECT_REPORT_REQ
+ self.mmentryFields.mmtype = CC_DETECT_REPORT_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_DETECT_REPORT_CNF_MMENTRY creates
@@ -411,7 +458,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.numGlid:
self.mmentry.CC_DETECT_REPORT_CNF = self.mmentry.CC_DETECT_REPORT_CNF + self.mmentryFields.glidsInfo.glidsInfo[self.i]
self.i=self.i+1
- return self.mmentry.CC_DETECT_REPORT_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_DETECT_REPORT_CNF
+ self.mmentryFields.mmtype = CC_DETECT_REPORT_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_WHO_RU_REQ_MMENTRY creates
@@ -422,7 +471,9 @@ class MmentryMethod():
# - NID
self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentry.CC_WHO_RU_REQ = self.mmentryFields.nidField
- return self.mmentry.CC_WHO_RU_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_WHO_RU_REQ
+ self.mmentryFields.mmtype = CC_WHO_RU_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_WHO_RU_CNF_MMENTRY creates
@@ -437,7 +488,9 @@ class MmentryMethod():
self.mmentryFields.createCmac(myCmac)
self.mmentryFields.createHfid(myHfid)
self.mmentry.CC_WHO_RU_CNF = self.mmentryFields.nidField + self.mmentryFields.cmacField + self.mmentryFields.hfidField
- return self.mmentry.CC_WHO_RU_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_WHO_RU_CNF
+ self.mmentryFields.mmtype = CC_WHO_RU_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ASSOC_REQ_MMENTRY creates
@@ -454,7 +507,9 @@ class MmentryMethod():
self.mmentryFields.createCcoCapability(myCcoCapability)
self.mmentryFields.createProxyNetworkingCapability(myProxyNetworkingCapability)
self.mmentry.CC_ASSOC_REQ = self.mmentryFields.reqTypeField + self.mmentryFields.nidField + self.mmentryFields.ccoCapabilityField + self.mmentryFields.proxyNetworkingCapabilityField
- return self.mmentry.CC_ASSOC_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_ASSOC_REQ
+ self.mmentryFields.mmtype = CC_ASSOC_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ASSOC_CNF_MMENTRY creates
@@ -473,7 +528,9 @@ class MmentryMethod():
self.mmentryFields.createStaTei(myStaTei)
self.mmentryFields.createLeaseTime(myLeaseTime)
self.mmentry.CC_ASSOC_CNF = self.mmentryFields.resultField + self.mmentryFields.nidField + self.mmentryFields.snidAccessField + self.mmentryFields.staTeiField + self.mmentryFields.leaseTimeField
- return self.mmentry.CC_ASSOC_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_ASSOC_CNF
+ self.mmentryFields.mmtype = CC_ASSOC_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LEAVE_REQ_MMENTRY creates
@@ -484,7 +541,9 @@ class MmentryMethod():
# - Reason
self.mmentryFields.createReason(myReason)
self.mmentry.CC_LEAVE_REQ = self.mmentryFields.reasonField
- return self.mmentry.CC_LEAVE_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_LEAVE_REQ
+ self.mmentryFields.mmtype = CC_LEAVE_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_LEAVE.CNF has no MMENTRY
@@ -492,7 +551,9 @@ class MmentryMethod():
print "CC_LEAVE.CNF ="
#CC_LEAVE_CNF_MMENTRY is composed by 0 field :
self.mmentry.CC_LEAVE_CNF = ""
- return self.mmentry.CC_LEAVE_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_LEAVE_CNF
+ self.mmentryFields.mmtype = CC_LEAVE_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_LEAVE_IND_MMENTRY creates
@@ -505,7 +566,9 @@ class MmentryMethod():
self.mmentryFields.createReason(myReason)
self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentry.CC_LEAVE_IND = self.mmentryFields.reasonField + self.mmentryFields.nidField
- return self.mmentry.CC_LEAVE_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_LEAVE_IND
+ self.mmentryFields.mmtype = CC_LEAVE_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_LEAVE.RSP has no MMENTRY
@@ -513,7 +576,9 @@ class MmentryMethod():
print "CC_LEAVE.RSP ="
#CC_LEAVE_RSP_MMENTRY is composed by 0 field :
self.mmentry.CC_LEAVE_RSP = ""
- return self.mmentry.CC_LEAVE_RSP
+ self.mmentryFields.mmentry = self.mmentry.CC_LEAVE_RSP
+ self.mmentryFields.mmtype = CC_LEAVE_RSP
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_SET_TEI_MAP.REQ has no MMENTRY
@@ -521,7 +586,9 @@ class MmentryMethod():
print "CC_SET_TEI.REQ ="
#CC_SET_TEI_REQ_MMENTRY is composed by 0 field :
self.mmentry.CC_SET_TEI_REQ = ""
- return self.mmentry.CC_SET_TEI_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_SET_TEI_REQ
+ self.mmentryFields.mmtype = CC_SET_TEI_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_SET_TEI_MAP_IND_MMENTRY creates
@@ -540,7 +607,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.num:
self.mmentry.CC_SET_TEI_MAP_IND = self.mmentry.CC_SET_TEI_MAP_IND + self.mmentryFields.teisAddrsStatuses[self.i]
self.i=self.i+1
- return self.mmentry.CC_SET_TEI_MAP_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_SET_TEI_MAP_IND
+ self.mmentryFields.mmtype = CC_SET_TEI_MAP_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_RELAY_REQ_MMENTRY creates
@@ -557,7 +626,9 @@ class MmentryMethod():
self.mmentryFields.createPayload(myPayload)
self.mmentryFields.createLength()
self.mmentry.CC_RELAY_REQ = self.mmentryFields.fdaField + self.mmentryFields.fTeiField + self.mmentryFields.lengthField + self.mmentryFields.payload
- return self.mmentry.CC_RELAY_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_RELAY_REQ
+ self.mmentryFields.mmtype = CC_RELAY_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_RELAY_IND_MMENTRY creates
@@ -574,7 +645,9 @@ class MmentryMethod():
self.mmentryFields.createPayload(myPayload)
self.mmentryFields.createLength()
self.mmentry.CC_RELAY_IND = self.mmentryFields.odaField + self.mmentryFields.oTeiField + self.mmentryFields.lengthField + self.mmentryFields.payload
- return self.mmentry.CC_RELAY_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_RELAY_IND
+ self.mmentryFields.mmtype = CC_RELAY_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_BEACON_RELIABILITY.REQ has no MMENTRY
@@ -582,7 +655,9 @@ class MmentryMethod():
print "CC_BEACON_RELIABILITY.REQ ="
#CC_BEACON_RELIABILITY_REQ_MMENTRY is composed by 0 field :
self.mmentry.CC_BEACON_RELIABILITY_REQ = ""
- return self.mmentry.CC_BEACON_RELIABILITY_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_BEACON_RELIABILITY_REQ
+ self.mmentryFields.mmtype = CC_BEACON_RELIABILITY_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_BEACON_RELIABILITY_CNF_MMENTRY creates
@@ -595,7 +670,9 @@ class MmentryMethod():
self.mmentryFields.createNbp(myNbp)
self.mmentryFields.createNmb(myNmb)
self.mmentry.CC_BEACON_RELIABILITY_CNF = self.mmentryFields.nbpField + self.mmentryFields.nmbField
- return self.mmentry.CC_BEACON_RELIABILITY_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_BEACON_RELIABILITY_CNF
+ self.mmentryFields.mmtype = CC_BEACON_RELIABILITY_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ALLOC_MOVE_REQ_MMENTRY creates
@@ -618,7 +695,9 @@ class MmentryMethod():
if self.mmentryFields.glidR in globalId:
self.mmentryFields.createReverseLinkBle(myNumR, myEndTimeR, myIntBleR)
self.mmentry.CC_ALLOC_MOVE_REQ = self.mmentry.CC_ALLOC_MOVE_REQ + self.mmentryFields.reverseLinkBle.ble
- return self.mmentry.CC_ALLOC_MOVE_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_ALLOC_MOVE_REQ
+ self.mmentryFields.mmtype = CC_ALLOC_MOVE_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC__ALLOC_MOVE_CNF_MMENTRY creates
@@ -631,7 +710,9 @@ class MmentryMethod():
self.mmentryFields.createCid(myTei, myLlidF)
self.mmentryFields.createResult(myResult)
self.mmentry.CC_LINK_SQZ_CNF = self.mmentryFields.cidField + self.mmentryFields.resultField
- return self.mmentry.CC_LINK_SQZ_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_LINK_SQZ_CNF
+ self.mmentryFields.mmtype = CC_LINK_SQZ_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ACCESS_NEW_REQ_MMENTRY creates
@@ -652,7 +733,9 @@ class MmentryMethod():
self.mmentryFields.createCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentryFields.createBle(myNum, myEndTime, myIntBle)
self.mmentry.CC_ACCESS_NEW_REQ = self.mmentryFields.steiField + self.mmentryFields.dteiField + self.mmentryFields.dAddrField + self.mmentryFields.llidField + self.mmentryFields.cspecField + self.mmentryFields.bleField
- return self.mmentry.CC_ACCESS_NEW_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_ACCESS_NEW_REQ
+ self.mmentryFields.mmtype = CC_ACCESS_NEW_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ACCESS_NEW_CNF_MMENTRY creates
# the MMENTRY Field of the CC_ACCESS_NEW.CNF MME
@@ -672,7 +755,9 @@ class MmentryMethod():
self.mmentryFields.createGcidR(myGcidR)
self.mmentryFields.createChanEstR(myChanEstR)
self.mmentry.CC_ACCESS_NEW_CNF = self.mmentryFields.resultField + self.mmentryFields.llidField + self.mmentryFields.gcidFField + self.mmentryFields.chanEstFField + self.mmentryFields.gcidRField + self.mmentryFields.chanEstRField
- return self.mmentry.CC_ACCESS_NEW_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_ACCESS_NEW_CNF
+ self.mmentryFields.mmtype = CC_ACCESS_NEW_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ACCESS_NEW_IND_MMENTRY creates
@@ -695,7 +780,9 @@ class MmentryMethod():
self.mmentryFields.createChanEstR(myChanEstR)
self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentry.CC_ACCESS_NEW_IND = self.mmentryFields.resultField + self.mmentryFields.llidField + self.mmentryFields.gcidFField + self.mmentryFields.chanEstFField + self.mmentryFields.gcidRField + self.mmentryFields.chanEstRField + self.mmentryFields.nidField
- return self.mmentry.CC_ACCESS_NEW_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_ACCESS_NEW_IND
+ self.mmentryFields.mmtype = CC_ACCESS_NEW_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ACCESS_NEW_RSP_MMENTRY creates
@@ -716,7 +803,9 @@ class MmentryMethod():
self.mmentryFields.createBleF(myNumF, myEndTimeF, myIntBleF)
self.mmentryFields.createBleR(myNumR, myEndTimeR, myIntBleR)
self.mmentry.CC_ACCESS_NEW_RSP = self.mmentryFields.resultField + self.mmentryFields.llidField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField + self.mmentryFields.bleFField + self.mmentryFields.bleRField
- return self.mmentry.CC_ACCESS_NEW_RSP
+ self.mmentryFields.mmentry = self.mmentry.CC_ACCESS_NEW_RSP
+ self.mmentryFields.mmtype = CC_ACCESS_NEW_RSP
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ACCESS_REL_REQ_MMENTRY creates
@@ -731,7 +820,9 @@ class MmentryMethod():
self.mmentryFields.createGcidF(myGcidF)
self.mmentryFields.createGcidR(myGcidR)
self.mmentry.CC_ACCESS_REL_REQ = self.mmentryFields.causeField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField
- return self.mmentry.CC_ACCESS_REL_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_ACCESS_REL_REQ
+ self.mmentryFields.mmtype = CC_ACCESS_REL_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ACCESS_REL_CNF_MMENTRY creates
@@ -746,7 +837,9 @@ class MmentryMethod():
self.mmentryFields.createGcidF(myGcidF)
self.mmentryFields.createGcidR(myGcidR)
self.mmentry.CC_ACCESS_REL_CNF = self.mmentryFields.resultField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField
- return self.mmentry.CC_ACCESS_REL_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_ACCESS_REL_CNF
+ self.mmentryFields.mmtype = CC_ACCESS_REL_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ACCESS_REL_IND_MMENTRY creates
@@ -761,7 +854,9 @@ class MmentryMethod():
self.mmentryFields.createGcidF(myGcidF)
self.mmentryFields.createGcidR(myGcidR)
self.mmentry.CC_ACCESS_REL_IND = self.mmentryFields.causeField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField
- return self.mmentry.CC_ACCESS_REL_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_ACCESS_REL_IND
+ self.mmentryFields.mmtype = CC_ACCESS_REL_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_ACCESS_REL_RSP_MMENTRY creates
@@ -776,7 +871,9 @@ class MmentryMethod():
self.mmentryFields.createGcidF(myGcidF)
self.mmentryFields.createGcidR(myGcidR)
self.mmentry.CC_ACCESS_REL_RSP = self.mmentryFields.resultField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField
- return self.mmentry.CC_ACCESS_REL_RSP
+ self.mmentryFields.mmentry = self.mmentry.CC_ACCESS_REL_RSP
+ self.mmentryFields.mmtype = CC_ACCESS_REL_RSP
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_DCPPC_IND_MMENTRY creates
@@ -787,7 +884,9 @@ class MmentryMethod():
# - DCPPC
self.mmentryFields.createDcppc(myDcppc)
self.mmentry.CC_DCPPC_IND = self.mmentryFields.dcppcField
- return self.mmentry.CC_DCPPC_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_DCPPC_IND
+ self.mmentryFields.mmtype = CC_DCPPC_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_DCPPC.RSP has no MMENTRY
@@ -795,7 +894,9 @@ class MmentryMethod():
print "CC_DCPPC.RSP ="
#CC_DCPPC_RSP_MMENTRY is composed by 0 field :
self.mmentry.CC_DCPPC_RSP = ""
- return self.mmentry.CC_DCPPC_RSP
+ self.mmentryFields.mmentry = self.mmentry.CC_DCPPC_RSP
+ self.mmentryFields.mmtype = CC_DCPPC_RSP
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CC_HP1_DET.REQ has no MMENTRY
@@ -803,7 +904,9 @@ class MmentryMethod():
print "CC_HP1_DET.REQ ="
#CC_HP1_DET_REQ_MMENTRY is composed by 0 field :
self.mmentry.CC_HP1_DET_REQ = ""
- return self.mmentry.CC_HP1_DET_REQ
+ self.mmentryFields.mmentry = self.mmentry.CC_HP1_DET_REQ
+ self.mmentryFields.mmtype = CC_HP1_DET_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_HP1_DET_CNF_MMENTRY creates
@@ -818,7 +921,9 @@ class MmentryMethod():
self.mmentryFields.createNhp10(myNhp10)
self.mmentryFields.createNhp11(myNhp11)
self.mmentry.CC_HP1_DET_CNF = self.mmentryFields.nbpField + self.mmentryFields.nhp10Field + self.mmentryFields.nhp11Field
- return self.mmentry.CC_HP1_DET_CNF
+ self.mmentryFields.mmentry = self.mmentry.CC_HP1_DET_CNF
+ self.mmentryFields.mmtype = CC_HP1_DET_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCC_BLE_UPDATE_IND_MMENTRY creates
@@ -832,7 +937,9 @@ class MmentryMethod():
self.mmentryFields.createGlids(myNumGlid, myGlids)
self.mmentryFields.createBle(self, myNum, myEndTime, myIntBle)
self.mmentry.CC_BLE_UPDATE_IND = self.mmentryFields.glids.glidsField[0] + self.mmentryFields.bleField
- return self.mmentry.CC_BLE_UPDATE_IND
+ self.mmentryFields.mmentry = self.mmentry.CC_BLE_UPDATE_IND
+ self.mmentryFields.mmtype = CC_BLE_UPDATE_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
@@ -850,7 +957,9 @@ class MmentryMethod():
self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentryFields.createCcoCapability(myCcoCapability)
self.mmentry.CM_UNASSOCIATED_STA_IND = self.mmentryFields.nidField + self.mmentryFields.ccoCapabilityField
- return self.mmentry.CM_UNASSOCIATED_STA_IND
+ self.mmentryFields.mmentry = self.mmentry.CM_UNASSOCIATED_STA_IND
+ self.mmentryFields.mmtype = CM_UNASSOCIATED_STA_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_ENCRYPTED_PAYLOAD_RSP_MMENTRY creates
@@ -865,7 +974,9 @@ class MmentryMethod():
self.mmentryFields.createPid(myPid)
self.mmentryFields.createPrn(myPrn)
self.mmentry.CM_ENCRYPTED_PAYLOAD_RSP = self.mmentryFields.resultField + self.mmentryFields.pidField + self.mmentryFields.prnField
- return self.mmentry.CM_ENCRYPTED_PAYLOAD_RSP
+ self.mmentryFields.mmentry = self.mmentry.CM_ENCRYPTED_PAYLOAD_RSP
+ self.mmentryFields.mmtype = CM_ENCRYPTED_PAYLOAD_RSP
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_SET_KEY_REQ_MMENTRY creates
@@ -894,7 +1005,9 @@ class MmentryMethod():
self.mmentryFields.createNewEks(myNewEks)
self.mmentryFields.createNewKey(myNewKey)
self.mmentry.CM_SET_KEY_REQ = self.mmentryFields.keyTypeField + self.mmentryFields.myNonceField + self.mmentryFields.yourNonceField + self.mmentryFields.pidField + self.mmentryFields.prnField + self.mmentryFields.pmnField + self.mmentryFields.ccoCapabilityField + self.mmentryFields.nidField + self.mmentryFields.newEksField + self.mmentryFields.newKeyField
- return self.mmentry.CM_SET_KEY_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_SET_KEY_REQ
+ self.mmentryFields.mmtype = CM_SET_KEY_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_SET_KEY_CNF_MMENTRY creates
@@ -917,7 +1030,9 @@ class MmentryMethod():
self.mmentryFields.createPmn(myPmn, myPmnReset)
self.mmentryFields.createCcoCapability(myCcoCapability)
self.mmentry.CM_SET_KEY_CNF = self.mmentryFields.resultField + self.mmentryFields.myNonceField + self.mmentryFields.yourNonceField + self.mmentryFields.pidField + self.mmentryFields.prnField + self.mmentryFields.pmnField + self.mmentryFields.ccoCapabilityField
- return self.mmentry.CM_SET_KEY_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_SET_KEY_CNF
+ self.mmentryFields.mmtype = CM_SET_KEY_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_GET_KEY_REQ_MMENTRY creates
@@ -944,7 +1059,9 @@ class MmentryMethod():
if self.mmentryFields.requestedKeyType == 4:
self.mmentryFields.createHashKey(myHashKey)
self.mmentry.CM_GET_KEY_REQ = self.mmentry.CM_GET_KEY_REQ + self.mmentryFields.hashKeyField
- return self.mmentry.CM_GET_KEY_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_GET_KEY_REQ
+ self.mmentryFields.mmtype = CM_GET_KEY_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_GET_KEY_CNF_MMENTRY creates
@@ -978,7 +1095,9 @@ class MmentryMethod():
elif self.mmentryFields.requestedKeyType < 4:
self.mmentryFields.createKey(myKey)
self.mmentry.CM_GET_KEY_CNF = self.mmentry.CM_GET_KEY_CNF + self.mmentryFields.keyField
- return self.mmentry.CM_GET_KEY_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_GET_KEY_CNF
+ self.mmentryFields.mmtype = CM_GET_KEY_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_SC_JOIN_REQ_MMENTRY creates
@@ -989,7 +1108,9 @@ class MmentryMethod():
# - CCo Capability
self.mmentryFields.createCcoCapability(myCcoCapability)
self.mmentry.CM_SC_JOIN_REQ = self.mmentryFields.ccoCapabilityField
- return self.mmentry.CM_SC_JOIN_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_SC_JOIN_REQ
+ self.mmentryFields.mmtype = CM_SC_JOIN_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_SC_JOIN_CNF_MMENTRY creates
@@ -1002,7 +1123,9 @@ class MmentryMethod():
self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentryFields.createStatusesNCapabilities(myAvlnStatus, myCcoCapability, myProxyNetworkCapability, myBackupCcoCapability, myCcoStatus, myPcoStatus, myBackupCcoStatus, myStatusesNCapabilities)
self.mmentry.CM_SC_JOIN_CNF = self.mmentryFields.nidField + self.mmentryFields.statusesNCapabilitiesField
- return self.mmentry.CM_SC_JOIN_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_SC_JOIN_CNF
+ self.mmentryFields.mmtype = CM_SC_JOIN_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_AMP_MAP_CNF_MMENTRY creates
@@ -1013,7 +1136,9 @@ class MmentryMethod():
# - ResType
self.mmentryFields.createResType(myResType)
self.mmentry.CM_AMP_MAP_CNF = self.mmentryFields.resTypeField
- return self.mmentry.CM_AMP_MAP_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_AMP_MAP_CNF
+ self.mmentryFields.mmtype = CM_AMP_MAP_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CM_BRG_INFO.REQ has no MMENTRY
@@ -1021,7 +1146,9 @@ class MmentryMethod():
print "CM_BRG_INFO.REQ ="
#CM_BRG_INFO_REQ_MMENTRY is composed by 0 field :
self.mmentry.CM_BRG_INFO_REQ = ""
- return self.mmentry.CM_BRG_INFO_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_BRG_INFO_REQ
+ self.mmentryFields.mmtype = CM_BRG_INFO_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_BRG_INFO_CNF_MMENTRY creates
@@ -1043,7 +1170,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.nbda:
self.mmentry.CM_BRG_INFO_CNF = self.mmentry.CM_BRG_INFO_CNF + self.mmentryFields.bdasField[self.i]
self.i=self.i+1
- return self.mmentry.CM_BRG_INFO_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_BRG_INFO_CNF
+ self.mmentryFields.mmtype = CM_BRG_INFO_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CONN_NEW_REQ_MMENTRY creates
@@ -1058,7 +1187,9 @@ class MmentryMethod():
self.mmentryFields.createCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentryFields.createClassifierRuleSetField(myClassifierRuleSetVersion, myNumberofClassifierRules, myClassifierRuleIdentifier, myClassifierRules)
self.mmentry.CM_CONN_NEW_REQ = self.mmentryFields.cidField + self.mmentryFields.cspecField + self.mmentryFields.classifierRuleSetField
- return self.mmentry.CM_CONN_NEW_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_CONN_NEW_REQ
+ self.mmentryFields.mmtype = CM_CONN_NEW_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CHAN_EST_IND_MMENTRY creates
@@ -1119,7 +1250,9 @@ class MmentryMethod():
while self.i<(self.mmentryFields.cbd_Len + (self.mmentryFields.cbd_Len % 2))/2:
self.mmentry.CM_CHAN_EST_IND = self.mmentry.CM_CHAN_EST_IND + self.mmentryFields.cbdsField[self.i]
self.i=self.i+1
- return self.mmentry.CM_CHAN_EST_IND
+ self.mmentryFields.mmentry = self.mmentry.CM_CHAN_EST_IND
+ self.mmentryFields.mmtype = CM_CHAN_EST_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_TM_UPDATE_IND_MMENTRY creates
# the MMENTRY Field of the CM_TM_UPDATE.IND MME
@@ -1162,12 +1295,14 @@ class MmentryMethod():
while self.i<self.mmentryFields.cbud_Len:
self.mmentry.CM_TM_UPDATE_IND = self.mmentry.CM_TM_UPDATE_IND + self.mmentryFields.cbudsField[self.i]
self.i=self.i+1
- return self.mmentry.CM_TM_UPDATE_IND
+ self.mmentryFields.mmentry = self.mmentry.CM_TM_UPDATE_IND
+ self.mmentryFields.mmtype = CM_TM_UPDATE_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_ENCRYPTED_PAYLOAD_IND_MMENTRY creates
# the MMENTRY Field of the CM_ENCRYPTED_PAYLOAD.IND MME
- def createCM_ENCRYPTED_PAYLOAD_IND_MMENTRY(self, myPeks=None, myAvlnStatus=None, myPid=None, myPrn=None, myPmn=None, myIvOrUuid=None, myIvOrUuidRandom=False, myRandomFillerEncrypted=None, myOda=None, myOsa=None, myVlanTag=None, myMtype=None, myMmv=None, myMmtype=None, myNfmi=None, myFnMi=None, myFmsn=None, myMmentry=None, myEncapsulatedMmEntry=None, myMmOrHlePayloadEncrypted=None, myCrcEncrypted=None, myPidEncrypted=None, myPrnEncrypted=None, myRandomPrn=None, myPmnEncrypted=None, myPaddingEncrypted=None, myRfLenEncrypted=None, myKey=None):
+ def createCM_ENCRYPTED_PAYLOAD_IND_MMENTRY(self, myPeks=None, myAvlnStatus=None, myPid=None, myPrn=None, myPmn=None, myIvOrUuid=None, myIvOrUuidRandom=False, myRandomFillerEncrypted=None, myOda=None, myOsa=None, myVlanTag=None, myMtype=None, myMmv=None, myMmtype=None, myNfmi=None, myFnMi=None, myFmsn=None, myMmentry=None, myEncapsulatedMmEntry=None, myMmOrHlePayloadEncrypted=None, myCrcEncrypted=None, myPidEncrypted=None, myPrnEncrypted=None, myRandomPrn=None, myPmnEncrypted=None, myPaddingEncrypted=None, myRfLenEncrypted=None, myKey=None, myEncryptedFields=None):
print "CM_ENCRYPTED_PAYLOAD.IND ="
#CM_ENCRYPTED_PAYLOAD_IND_MMENTRY is composed by 15 fields :
# - Peks
@@ -1185,37 +1320,35 @@ class MmentryMethod():
# - PmnEncrypted
# - PaddingEncrypted
# - RfLenEncrypted
- self.mmentryFields.createPeks(myPeks)
- self.mmentryFields.createAvlnStatus(myAvlnStatus)
- self.mmentryFields.createPid(myPid)
- self.mmentryFields.createPrn(myPrn)
- self.mmentryFields.createPmn(myPmn)
- self.mmentry.CM_ENCRYPTED_PAYLOAD_IND = self.mmentryFields.peksField + self.mmentryFields.avlnStatusField + self.mmentryFields.pidField + self.mmentryFields.prnField + self.mmentryFields.pmnField
- if self.mmentryFields.pid==4:
- self.mmentryFields.createUuid(myIvOrUuid, myIvOrUuidRandom)
- self.mmentryFields.createMmOrHlePayloadEncrypted(myMmOrHlePayloadEncrypted)
- self.mmentryFields.createLengthForEncryption()
- self.mmentry.CM_ENCRYPTED_PAYLOAD_IND = self.mmentry.CM_ENCRYPTED_PAYLOAD_IND + self.mmentryFields.uuidField + self.mmentryFields.lengthForEncryptionField + self.mmentryFields.mmOrHlePayloadEncryptedField
+ if myEncryptedFields == None:
+ self.mmentryFields.createPeks(myPeks)
+ self.mmentryFields.createAvlnStatus(myAvlnStatus)
+ self.mmentryFields.createPid(myPid)
+ self.mmentryFields.createPrn(myPrn)
+ self.mmentryFields.createPmn(myPmn)
+ self.mmentry.CM_ENCRYPTED_PAYLOAD_IND = self.mmentryFields.peksField + self.mmentryFields.avlnStatusField + self.mmentryFields.pidField + self.mmentryFields.prnField + self.mmentryFields.pmnField
+ if self.mmentryFields.pid==4:
+ self.mmentryFields.createUuid(myIvOrUuid, myIvOrUuidRandom)
+ self.mmentryFields.createMmOrHlePayloadEncrypted(self.mmentryFields.pid, myMmOrHlePayloadEncrypted)
+ self.mmentryFields.createLengthForEncryption()
+ self.mmentry.CM_ENCRYPTED_PAYLOAD_IND = self.mmentry.CM_ENCRYPTED_PAYLOAD_IND + self.mmentryFields.uuidField + self.mmentryFields.lengthForEncryptionField + self.mmentryFields.mmOrHlePayloadEncryptedField
+ else:
+ self.mmentry.CM_ENCRYPTED_PAYLOAD_IND = self.mmentry.CM_ENCRYPTED_PAYLOAD_IND + self.mmentryFields.createEncryptedFields(myIvOrUuid, myIvOrUuidRandom, myRandomFillerEncrypted, myOda, myOsa, myVlanTag, myMtype, myMmv, myMmtype, myNfmi, myFnMi, myFmsn, myMmentry, myEncapsulatedMmEntry, myMmOrHlePayloadEncrypted, myCrcEncrypted, myPidEncrypted, myPrnEncrypted, myRandomPrn, myPmnEncrypted, myPaddingEncrypted, myRfLenEncrypted, myKey, myEncryptedFields)
+ self.mmentryFields.mmentry = self.mmentry.CM_ENCRYPTED_PAYLOAD_IND
+ self.mmentryFields.mmtype = CM_ENCRYPTED_PAYLOAD_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
else:
- self.mmentryFields.createIv(myIvOrUuid, myIvOrUuidRandom)
- self.mmentryFields.createRandomFillerEncrypted(myRfLenEncrypted, myRandomFillerEncrypted)
- self.mmentryFields.createMmOrHlePayloadEncrypted(myOda, myOsa, myVlanTag, myMtype, myMmv, myMmtype, myNfmi, myFnMi, myFmsn, myMmentry, myEncapsulatedMmEntry, myMmOrHlePayloadEncrypted)
- self.mmentryFields.createLengthForEncryption()
- self.mmentryFields.createCrcEncrypted(myCrcEncrypted)
- #self.mmentryFields.createPidEncrypted(myPidEncrypted)
- self.mmentryFields.createPrnEncrypted(myPrnEncrypted, myRandomPrn)
- self.mmentryFields.createPmnEncrypted(myPmnEncrypted)
- self.mmentryFields.createPaddingEncrypted(myPaddingEncrypted)
- self.mmentryFields.createKey(myKey)
-
- self.mmentry.CM_ENCRYPTED_PAYLOAD_IND = self.mmentry.CM_ENCRYPTED_PAYLOAD_IND + self.mmentryFields.ivField + self.mmentryFields.lengthForEncryptionField
-
- encryptedFields = self.mmentryFields.randomFillerEncryptedField + self.mmentryFields.mmOrHlePayloadEncryptedField + self.mmentryFields.crcEncryptedField + self.mmentryFields.pidField + self.mmentryFields.prnEncryptedField + self.mmentryFields.pmnEncryptedField + self.mmentryFields.paddingEncryptedField + self.mmentryFields.rfLenEncryptedField
- myEncryption=new(self.mmentryFields.keyField,2,self.mmentryFields.ivField)
- encryptedFields=myEncryption.encrypt(encryptedFields)
- self.mmentry.CM_ENCRYPTED_PAYLOAD_IND = self.mmentry.CM_ENCRYPTED_PAYLOAD_IND + encryptedFields
-
- return self.mmentry.CM_ENCRYPTED_PAYLOAD_IND
+ self.mmentryFields.createPeks(myEncryptedFields[0])
+ self.mmentryFields.createAvlnStatus(myEncryptedFields[1])
+ self.mmentryFields.createPid(myEncryptedFields[2])
+ self.mmentryFields.createPrn(myEncryptedFields[3:5])
+ self.mmentryFields.createPmn(myEncryptedFields[5])
+ if self.mmentryFields.pid==4:
+ self.mmentryFields.createUuid(myEncryptedFields[6:22])
+ self.mmentryFields.createLengthForEncryption(myEncryptedFields[22:24])
+ self.mmentryFields.createMmOrHlePayloadEncrypted(myEncryptedFields[24:])
+ else:
+ self.mmentryFields.createEncryptedFields(myKey=myKey,myEncryptedFields=myEncryptedFields[6:])
#createCM_MME_ERROR_IND_MMENTRY creates
@@ -1232,7 +1365,9 @@ class MmentryMethod():
self.mmentryFields.createRx_MMTYPE(myRx_MMTYPE)
self.mmentryFields.createInvalidByteOffset(myInvalidByteOffset)
self.mmentry.CM_MME_ERROR_IND = self.mmentryFields.reasonCodeField + self.mmentryFields.rx_MMVField + self.mmentryFields.rx_MMTYPEField + self.mmentryFields.invalidByteOffsetField
- return self.mmentry.CM_MME_ERROR_IND
+ self.mmentryFields.mmentry = self.mmentry.CM_MME_ERROR_IND
+ self.mmentryFields.mmtype = CM_MME_ERROR_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CONN_NEW_CNF_MMENTRY creates
@@ -1251,7 +1386,9 @@ class MmentryMethod():
if self.mmentryFields.result == 4 :
self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CM_CONN_NEW_CNF = self.mmentry.CM_CONN_NEW_CNF + self.mmentryFields.proposedCspecField
- return self.mmentry.CM_CONN_NEW_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_CONN_NEW_CNF
+ self.mmentryFields.mmtype = CM_CONN_NEW_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CONN_REL_IND_MMENTRY creates
@@ -1268,7 +1405,9 @@ class MmentryMethod():
if self.mmentryFields.reasonCode == 1 :
self.mmentryFields.createViolatedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CM_CONN_REL_IND = self.mmentry.CM_CONN_REL_IND + self.mmentryFields.violatedCspecField
- return self.mmentry.CM_CONN_REL_IND
+ self.mmentryFields.mmentry = self.mmentry.CM_CONN_REL_IND
+ self.mmentryFields.mmtype = CM_CONN_REL_IND
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CONN_REL_RSP_MMENTRY creates
@@ -1279,7 +1418,9 @@ class MmentryMethod():
# - CID
self.mmentryFields.createCid(myTei, myLlidF)
self.mmentry.CM_CONN_REL_RSP = self.mmentryFields.cidField
- return self.mmentry.CM_CONN_REL_RSP
+ self.mmentryFields.mmentry = self.mmentry.CM_CONN_REL_RSP
+ self.mmentryFields.mmtype = CM_CONN_REL_RSP
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CONN_MOD_REQ_MMENTRY creates
@@ -1292,7 +1433,9 @@ class MmentryMethod():
self.mmentryFields.createCid(myTei, myLlidF)
self.mmentryFields.createModifiedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CM_CONN_MOD_REQ = self.mmentryFields.cidField + self.mmentryFields.modifiedCspecField
- return self.mmentry.CM_CONN_MOD_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_CONN_MOD_REQ
+ self.mmentryFields.mmtype = CM_CONN_MOD_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CONN_MOD_CNF_MMENTRY creates
@@ -1309,7 +1452,9 @@ class MmentryMethod():
if self.mmentryFields.result == 1 :
self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
self.mmentry.CM_CONN_MOD_CNF = self.mmentry.CM_CONN_MOD_CNF + self.mmentryFields.proposedCspecField
- return self.mmentry.CM_CONN_MOD_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_CONN_MOD_CNF
+ self.mmentryFields.mmtype = CM_CONN_MOD_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CONN_INFO_REQ_MMENTRY creates
@@ -1325,7 +1470,9 @@ class MmentryMethod():
myNumGlid=1
self.mmentryFields.createGlids(myNumGlid, myGlids)
self.mmentry.CM_CONN_INFO_REQ = self.mmentryFields.reqTypeField + self.mmentryFields.cidField + self.mmentryFields.glids.glidsField[0]
- return self.mmentry.CM_CONN_INFO_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_CONN_INFO_REQ
+ self.mmentryFields.mmtype = CM_CONN_INFO_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_CONN_INFO_CNF_MMENTRY creates
@@ -1341,7 +1488,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.numConn:
self.mmentry.CM_CONN_INFO_CNF = self.mmentry.CM_CONN_INFO_CNF + self.mmentryFields.connInfos[self.i].ConnInfo
self.i=self.i+1
- return self.mmentry.CM_CONN_INFO_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_CONN_INFO_CNF
+ self.mmentryFields.mmtype = CM_CONN_INFO_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CM_STA_CAP.REQ has no MMENTRY
@@ -1349,7 +1498,9 @@ class MmentryMethod():
print "CM_STA_CAP.REQ ="
#CM_STA_CAP_REQ_MMENTRY is composed by 0 field :
self.mmentry.CM_STA_CAP_REQ = ""
- return self.mmentry.CM_STA_CAP_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_STA_CAP_REQ
+ self.mmentryFields.mmtype = CM_STA_CAP_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_STA_CAP_CNF_MMENTRY creates
@@ -1379,7 +1530,9 @@ class MmentryMethod():
self.mmentryFields.createBidirectionalBursting(myBidirectionalBursting)
self.mmentryFields.createImplementationVer(myImplementationVer)
self.mmentry.CM_STA_CAP_CNF = self.mmentryFields.reasonCodeField + self.mmentryFields.macAddressField + self.mmentryFields.ouiField + self.mmentryFields.autoConnectField + self.mmentryFields.smoothingField + self.mmentryFields.ccoCapabilityField + self.mmentryFields.proxyCapableField + self.mmentryFields.backupCcoCapableField + self.mmentryFields.softHandOverField + self.mmentryFields.twoSymFcField + self.mmentryFields.maxFL_AVField + self.mmentryFields.homePlug11CapField + self.mmentryFields.homePlug10InteropField + self.mmentryFields.regulatoryCapField + self.mmentryFields.bidirectionalBurstingField + self.mmentryFields.implementationVerField
- return self.mmentry.CM_STA_CAP_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_STA_CAP_CNF
+ self.mmentryFields.mmtype = CM_STA_CAP_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CM_NW_INFO.REQ has no MMENTRY
@@ -1387,7 +1540,9 @@ class MmentryMethod():
print "CM_NW_INFO.REQ ="
#CM_NW_INFO_REQ_MMENTRY is composed by 0 field :
self.mmentry.CM_NW_INFO_REQ = ""
- return self.mmentry.CM_NW_INFO_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_NW_INFO_REQ
+ self.mmentryFields.mmtype = CM_NW_INFO_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_NW_INFO_CNF_MMENTRY creates
@@ -1403,7 +1558,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.numNws:
self.mmentry.CM_NW_INFO_CNF = self.mmentry.CM_NW_INFO_CNF + self.mmentryFields.nwsInfo[self.i].nwInfo
self.i=self.i+1
- return self.mmentry.CM_NW_INFO_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_NW_INFO_CNF
+ self.mmentryFields.mmtype = CM_NW_INFO_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_GET_BEACON_REQ_MMENTRY creates
@@ -1414,7 +1571,9 @@ class MmentryMethod():
# - NID
self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentry.CM_GET_BEACON_REQ = self.mmentryFields.nidField
- return self.mmentry.CM_GET_BEACON_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_GET_BEACON_REQ
+ self.mmentryFields.mmtype = CM_GET_BEACON_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_HFID_REQ_MMENTRY creates
@@ -1437,7 +1596,9 @@ class MmentryMethod():
self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentryFields.createHfid(myHfid)
self.mmentry.CM_HFID_REQ = self.mmentry.CM_HFID_REQ + self.mmentryFields.nidField + self.mmentryFields.hfidField
- return self.mmentry.CM_HFID_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_HFID_REQ
+ self.mmentryFields.mmtype = CM_HFID_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_HFID_CNF_MMENTRY creates
@@ -1450,7 +1611,9 @@ class MmentryMethod():
self.mmentryFields.createResType(myResType)
self.mmentryFields.createHfid(myHfid)
self.mmentry.CM_HFID_CNF = self.mmentryFields.resTypeField + self.mmentryFields.hfidField
- return self.mmentry.CM_HFID_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_HFID_CNF
+ self.mmentryFields.mmtype = CM_HFID_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#CM_NW_STATS.REQ has no MMENTRY
@@ -1458,7 +1621,9 @@ class MmentryMethod():
print "CM_NW_STATS.REQ ="
#CM_NW_STATS_REQ_MMENTRY is composed by 0 field :
self.mmentry.CM_NW_STATS_REQ = ""
- return self.mmentry.CM_NW_STATS_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_NW_STATS_REQ
+ self.mmentryFields.mmtype = CM_NW_STATS_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_NW_STATS_CNF_MMENTRY creates
@@ -1475,7 +1640,9 @@ class MmentryMethod():
while self.i<self.mmentryFields.numSta:
self.mmentry.CM_NW_STATS_CNF = self.mmentry.CM_NW_STATS_CNF + self.mmentryFields.dasAvgPhyDR_TxAvgPhyDR_Rx[self.i]
self.i=self.i+1
- return self.mmentry.CM_NW_STATS_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_NW_STATS_CNF
+ self.mmentryFields.mmtype = CM_NW_STATS_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_LINK_STATS_REQ_MMENTRY creates
@@ -1498,7 +1665,9 @@ class MmentryMethod():
self.mmentryFields.createMgmt_Flag(myMgmt_Flag)
self.mmentryFields.createDaSa(myDaSa)
self.mmentry.CM_LINK_STATS_REQ = self.mmentryFields.reqTypeField + self.mmentryFields.reqIdField + self.mmentryFields.nidField + self.mmentryFields.lidField + self.mmentryFields.tlFlagField + self.mmentryFields.mgmt_FlagField + self.mmentryFields.daSaField
- return self.mmentry.CM_LINK_STATS_REQ
+ self.mmentryFields.mmentry = self.mmentry.CM_LINK_STATS_REQ
+ self.mmentryFields.mmtype = CM_LINK_STATS_REQ
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_LINK_STATS_CNF_MMENTRY creates
@@ -1518,7 +1687,9 @@ class MmentryMethod():
else: #Tx
self.mmentryFields.createTransmitMfsLinkStats(myBeaconPeriodCnt, myNumMsdus, myOctets, myNumSegs, myNumSeg_Suc, myNumSeg_Dropped, myNumPbs, myNumMpdus, myNumBursts, myNumSacks, myNumLatBins, myLatBinGran, myLatBin, myRandomLatBin)
self.mmentry.CM_LINK_STATS_CNF = self.mmentry.CM_LINK_STATS_CNF + self.mmentryFields.transmitMfsLinkStats
- return self.mmentry.CM_LINK_STATS_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_LINK_STATS_CNF
+ self.mmentryFields.mmtype = CM_LINK_STATS_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
#createCM_GET_BEACON_CNF_MMENTRY creates
@@ -1554,7 +1725,282 @@ class MmentryMethod():
self.mmentryFields.createNmCcoCaptsbf(myNm, myCcoCap, myNmCcoCapRsvd=None)
self.mmentryFields.createBmi(myNbe, myRandomBehdr, myBmiNumber, myBehdr, param1, param2, param3, param4, param5, param6, param7, param8, param9, paramA, paramB)
self.mmentry.CM_GET_BEACON_CNF = self.mmentryFields.nidHmField + self.mmentryFields.steiField + self.mmentryFields.btNcnrNpsmNumSlotField + self.mmentryFields.slotUsageField + self.mmentryFields.slotIdAclssHoipRtsbfField + self.mmentryFields.nmCcoCapRsvdField + self.mmentryFields.bmiField
- return self.mmentry.CM_GET_BEACON_CNF
+ self.mmentryFields.mmentry = self.mmentry.CM_GET_BEACON_CNF
+ self.mmentryFields.mmtype = CM_GET_BEACON_CNF
+ self.mmentryFields.createMmeMfl(self.mmentryFields.mmentry)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+