Q3 Manager for Siemens D900/1800 Sr 9,10,12

The main idea is:

Q3 Manager listens two TCP/IP ports for Q3 XML Clients and Q3 BER Clients and translates requests to NE (network element) over TCP/IP.

Q3 XML Client – Q3 Manager:
The TCP/IP packet consists of length indicator (LI, 4 octets) and user data.
For instance:

void dispmsub(char *msin){
        char s[255];
        sprintf(&(s[0]),"<request><action>get</action><moc>hlrSubEntry_OOi</moc>
<moi><hlrFunctionId_AOi><FunctionId>1</FunctionId></hlrFunctionId_AOi><msin_AOi>
<Msin>%s</Msin></msin_AOi></moi></request>",msin);
        memcpy(&(tmpbuff[4]),&(s[0]),strlen(&(s[0])));
        sztmpbuff=strlen(&(s[0]))+4;
        tmpbuff[0]=sztmpbuff>>24;
        tmpbuff[1]=(sztmpbuff>>16)&0xFF;
        tmpbuff[2]=(sztmpbuff>>8)&0xFF;
        tmpbuff[3]=sztmpbuff&0xFF;

        send_to_server();
};

Some examples for subscriber management:
CAN AC MSUB:

<request>
	<action>delete</action>
	<moc>acSubEntry_OOi</moc>
	<moi>
			<acFunctionId_AOi>
				<FunctionId>2</FunctionId>
			</acFunctionId_AOi>
		<msin_AOi>
			<Msin>0123456789</Msin>
		</msin_AOi>
	</moi>
</request>

DISP AC MSUB:

<request>
	<action>get</action>
	<moc>acSubEntry_OOi</moc>
	<moi>
		<acFunctionId_AOi>
			<FunctionId>2</FunctionId>
		</acFunctionId_AOi>
		<msin_AOi>
			<Msin>0123456789</Msin>
		</msin_AOi>
	</moi>
</request>

CR AC MSUB:

<request>
	<action>create</action>
	<moc>acSubEntry_OOi</moc>
	<moi>
		<acFunctionId_AOi>
			<FunctionId>2</FunctionId>
		</acFunctionId_AOi>
		<msin_AOi>
			<Msin>0123456789</Msin>
		</msin_AOi>
	</moi>
	<attributeList>
		<acMsubType_AOi>
			<AcMsubType>1</AcMsubType>
		</acMsubType_AOi>
		<encryptedKi_AOi>
		<EncryptedKi>00 11 22 33 44 55 66 77 88 99 00 11 22 33 44 55</EncryptedKi>
		</encryptedKi_AOi>
	</attributeList>
</request>

CAN MSUB:

<request>
	<action>delete</action>
	<moc>hlrSubEntry_OOi</moc>
	<moi>
		<hlrFunctionId_AOi>
			<FunctionId>1</FunctionId>
		</hlrFunctionId_AOi>
		<msin_AOi>
			<Msin>0123456789</Msin>
		</msin_AOi>
	</moi>
</request>

CR MSUB:

<request>
	<action>create</action>
	<moc>hlrSubEntry_OOi</moc>
	<moi>
		<hlrFunctionId_AOi>
			<FunctionId>1</FunctionId>
		</hlrFunctionId_AOi>
		<msin_AOi>
			<Msin>0123456789</Msin>
		</msin_AOi>
	</moi>
	<attributeList>
		<mSubType_AOi>
			<MSubType>1</MSubType>
		</mSubType_AOi>
		<mscat_AOi>
			<MsCat>1</MsCat>
		</mscat_AOi>
		<numberingType_AOi>
			<NumberingType>1</NumberingType>
		</numberingType_AOi>
		<subsRestr_AOi>
			<SubsRestr>5</SubsRestr>
		</subsRestr_AOi>
		<barrSpecToHPLMN_AOi>
			<BarrSpecToHPLMN>
				<BarrSpecificToHPLMN>3</BarrSpecificToHPLMN>
			</BarrSpecToHPLMN>
		</barrSpecToHPLMN_AOi>
		<ndcList_AOi>
			<NDCList>
				<NDC>012</NDC>
			</NDCList>
		</ndcList_AOi>
		<basicServices_AOi>
			<BasicServices>
				<BasicService>
					<sn>9876543210</sn>
					<basicServiceCodeEntry>1</basicServiceCodeEntry>
				</BasicService>
			</BasicServices>
		</basicServices_AOi>
	</attributeList>
</request>

DISP MSUB (by MSIN):

<request>
	<action>get</action>
	<moc>hlrSubEntry_OOi</moc>
	<moi>
		<hlrFunctionId_AOi>
			<FunctionId>1</FunctionId>
		</hlrFunctionId_AOi>
		<msin_AOi>
			<Msin>0123456789</Msin>
		</msin_AOi>
	</moi>
</request>

DISP MSUB (by phonenumber):

<request>
	<action>get</action>
	<moc>hlrFunction_OOi</moc>
	<moi>
		<hlrFunctionId_AOi>
			<FunctionId>1</FunctionId>
		</hlrFunctionId_AOi>
	</moi>
	<scope>
		<Scope>
			<namedNumbers>1</namedNumbers>
		</Scope>
	</scope>
	<filter>
		<and>
			<equality>
				<CMIPobjectClass>hlrSubEntry_OOi</CMIPobjectClass>
			</equality>
			<equality>
				<sn_AOi>
					<Sn>9876543210</Sn>
				</sn_AOi>
			</equality>
			<subsetOf>
				<ndcList_AOi>
					<NDCList>
						<NDC>902</NDC>
					</NDCList>
				</ndcList_AOi>
			</subsetOf>
		</and>
	</filter>
</request>

You can download this description in PDF here