org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan Java Examples

The following examples show how to use org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SS7Honeypot.java    From SigFW with GNU Affero General Public License v3.0 5 votes vote down vote up
private void initiateUSSD() throws MAPException {
    logger.debug("[[[[[[[[[[    initiateUSSD      ]]]]]]]]]]");

    //SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, null, 1, SSN);
    //SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, null, 2, SSN);
    
    GlobalTitle callingGT = this.sccpProvider.getParameterFactory().createGlobalTitle("111111111111", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    GlobalTitle calledGT = this.sccpProvider.getParameterFactory().createGlobalTitle("222222222222", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    
    SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, callingGT, SERVER_SPC, 8);
    SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, calledGT, CLIENT_SPC, 8);
        
    
    ISDNAddressString origReference = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.land_mobile, "11111111111");
    ISDNAddressString destReference = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.land_mobile, "111111111111111");
    
    // First create Dialog
    MAPDialogSupplementary mapDialog = this.mapProvider.getMAPServiceSupplementary().createNewDialog(
            MAPApplicationContext.getInstance(MAPApplicationContextName.networkUnstructuredSsContext,
                    MAPApplicationContextVersion.version2), callingParty, origReference, calledParty, destReference);

    CBSDataCodingSchemeImpl ussdDataCodingScheme = new CBSDataCodingSchemeImpl(0x0F);

    // USSD String: *111*+11111111111#
    // The Charset is null, here we let system use default Charset (UTF-7 as
    // explained in GSM 03.38. However if MAP User wants, it can set its own
    // impl of Charset
    USSDString ussdString = this.mapProvider.getMAPParameterFactory().createUSSDString("*111*+11111111111#", ussdDataCodingScheme, null);

    ISDNAddressString msisdn = this.mapProvider.getMAPParameterFactory().createISDNAddressString(
            AddressNature.international_number, NumberingPlan.ISDN, "11111111111");

    mapDialog.addProcessUnstructuredSSRequest(ussdDataCodingScheme, ussdString, null, msisdn);

    // This will initiate the TC-BEGIN with INVOKE component
    mapDialog.send();
}
 
Example #2
Source File: Server.java    From gmlc with GNU Affero General Public License v3.0 5 votes vote down vote up
private void initSCCP() throws Exception {
  this.sccpStack = new SccpStackImpl("MapLoadServerSccpStack");
  this.sccpStack.setMtp3UserPart(1, this.serverM3UAMgmt);

  this.sccpStack.start();
  this.sccpStack.removeAllResourses();

  this.sccpStack.getSccpResource().addRemoteSpc(0, CLIENT_SPC, 0, 0);
  this.sccpStack.getSccpResource().addRemoteSsn(0, CLIENT_SPC, CLIENT_SSN, 0, false);

  this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, SERVER_SPC, NETWORK_INDICATOR, 0);
  this.sccpStack.getRouter().addMtp3Destination(1, 1, CLIENT_SPC, CLIENT_SPC, 0, 255, 255);

  ParameterFactoryImpl fact = new ParameterFactoryImpl();
  EncodingScheme ec = new BCDEvenEncodingScheme();
  GlobalTitle gt1 = fact.createGlobalTitle("-", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, ec,
      NatureOfAddress.INTERNATIONAL);
  GlobalTitle gt2 = fact.createGlobalTitle("-", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, ec,
      NatureOfAddress.INTERNATIONAL);
  SccpAddress localAddress = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt1, SERVER_SPC, SERVER_SSN);
  this.sccpStack.getRouter().addRoutingAddress(1, localAddress);
  SccpAddress remoteAddress = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt2, CLIENT_SPC, CLIENT_SSN);
  this.sccpStack.getRouter().addRoutingAddress(2, remoteAddress);

  GlobalTitle gt = fact.createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, ec,
      NatureOfAddress.INTERNATIONAL);
  SccpAddress pattern = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
  this.sccpStack.getRouter().addRule(1, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.REMOTE, pattern,
      "K", 1, -1, null, 0);
  this.sccpStack.getRouter().addRule(2, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.LOCAL, pattern, "K",
      2, -1, null, 0);
  this.sccpStack.getRouter().addLongMessageRule(1, 1, 16384, LongMessageRuleType.XUDT_ENABLED);
}
 
Example #3
Source File: SS7Server.java    From SigFW with GNU Affero General Public License v3.0 5 votes vote down vote up
private void initiateUSSD() throws MAPException {
    logger.debug("[[[[[[[[[[    initiateUSSD      ]]]]]]]]]]");

    //SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, null, 1, SSN);
    //SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, null, 2, SSN);
    
    GlobalTitle callingGT = this.sccpProvider.getParameterFactory().createGlobalTitle("111111111111", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    GlobalTitle calledGT = this.sccpProvider.getParameterFactory().createGlobalTitle("222222222222", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    
    SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, callingGT, SERVER_SPC, 8);
    SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, calledGT, CLIENT_SPC, 8);
        
    
    ISDNAddressString origReference = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.land_mobile, "11111111111");
    ISDNAddressString destReference = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.land_mobile, "111111111111111");
    
    // First create Dialog
    MAPDialogSupplementary mapDialog = this.mapProvider.getMAPServiceSupplementary().createNewDialog(
            MAPApplicationContext.getInstance(MAPApplicationContextName.networkUnstructuredSsContext,
                    MAPApplicationContextVersion.version2), callingParty, origReference, calledParty, destReference);

    CBSDataCodingSchemeImpl ussdDataCodingScheme = new CBSDataCodingSchemeImpl(0x0F);

    // USSD String: *111*+11111111111#
    // The Charset is null, here we let system use default Charset (UTF-7 as
    // explained in GSM 03.38. However if MAP User wants, it can set its own
    // impl of Charset
    USSDString ussdString = this.mapProvider.getMAPParameterFactory().createUSSDString("*111*+11111111111#", ussdDataCodingScheme, null);

    ISDNAddressString msisdn = this.mapProvider.getMAPParameterFactory().createISDNAddressString(
            AddressNature.international_number, NumberingPlan.ISDN, "11111111111");

    mapDialog.addProcessUnstructuredSSRequest(ussdDataCodingScheme, ussdString, null, msisdn);

    // This will initiate the TC-BEGIN with INVOKE component
    mapDialog.send();
}
 
Example #4
Source File: SS7ClientLiveInput.java    From SigFW with GNU Affero General Public License v3.0 5 votes vote down vote up
private void initiateUSSD() throws MAPException {

        //SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, null, 1, SSN);
        //SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, null, 2, SSN);
        
        GlobalTitle callingGT = this.sccpProvider.getParameterFactory().createGlobalTitle("111111111111", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
        GlobalTitle calledGT = this.sccpProvider.getParameterFactory().createGlobalTitle("222222222222", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
        
        SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, callingGT, CLIENT_SPC, 8);
        SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, calledGT, SERVER_SPC, 8);
            
        
        ISDNAddressString origReference = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.land_mobile, "11111111111");
        ISDNAddressString destReference = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.land_mobile, "111111111111111");
        
        // First create Dialog
        MAPDialogSupplementary mapDialog = this.mapProvider.getMAPServiceSupplementary().createNewDialog(
                MAPApplicationContext.getInstance(MAPApplicationContextName.networkUnstructuredSsContext,
                        MAPApplicationContextVersion.version2), callingParty, origReference, calledParty, destReference);

        CBSDataCodingSchemeImpl ussdDataCodingScheme = new CBSDataCodingSchemeImpl(0x0F);

        // USSD String: *111*+11111111111#
        // The Charset is null, here we let system use default Charset (UTF-7 as
        // explained in GSM 03.38. However if MAP User wants, it can set its own
        // impl of Charset
        USSDString ussdString = this.mapProvider.getMAPParameterFactory().createUSSDString("*111*+11111111111#", ussdDataCodingScheme, null);

        ISDNAddressString msisdn = this.mapProvider.getMAPParameterFactory().createISDNAddressString(
                AddressNature.international_number, NumberingPlan.ISDN, "11111111111");

        mapDialog.addProcessUnstructuredSSRequest(ussdDataCodingScheme, ussdString, null, msisdn);

        // This will initiate the TC-BEGIN with INVOKE component
        mapDialog.send();
    }
 
Example #5
Source File: SS7Client.java    From SigFW with GNU Affero General Public License v3.0 5 votes vote down vote up
private void initiateUSSD() throws MAPException {

        //SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, null, 1, SSN);
        //SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, null, 2, SSN);
        
        GlobalTitle callingGT = this.sccpProvider.getParameterFactory().createGlobalTitle("111111111111", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
        GlobalTitle calledGT = this.sccpProvider.getParameterFactory().createGlobalTitle("222222222222", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
        
        SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, callingGT, CLIENT_SPC, 8);
        SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, calledGT, SERVER_SPC, 8);
            
        
        ISDNAddressString origReference = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.land_mobile, "11111111111");
        ISDNAddressString destReference = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.land_mobile, "111111111111111");
        
        // First create Dialog
        MAPDialogSupplementary mapDialog = this.mapProvider.getMAPServiceSupplementary().createNewDialog(
                MAPApplicationContext.getInstance(MAPApplicationContextName.networkUnstructuredSsContext,
                        MAPApplicationContextVersion.version2), callingParty, origReference, calledParty, destReference);

        CBSDataCodingSchemeImpl ussdDataCodingScheme = new CBSDataCodingSchemeImpl(0x0F);

        // USSD String: *111*+11111111111#
        // The Charset is null, here we let system use default Charset (UTF-7 as
        // explained in GSM 03.38. However if MAP User wants, it can set its own
        // impl of Charset
        USSDString ussdString = this.mapProvider.getMAPParameterFactory().createUSSDString("*111*+11111111111#", ussdDataCodingScheme, null);

        ISDNAddressString msisdn = this.mapProvider.getMAPParameterFactory().createISDNAddressString(
                AddressNature.international_number, NumberingPlan.ISDN, "11111111111");

        mapDialog.addProcessUnstructuredSSRequest(ussdDataCodingScheme, ussdString, null, msisdn);

        // This will initiate the TC-BEGIN with INVOKE component
        mapDialog.send();
    }
 
Example #6
Source File: SS7Honeypot.java    From SigFW with GNU Affero General Public License v3.0 5 votes vote down vote up
public void onSendRoutingInfoForSMRequest(SendRoutingInfoForSMRequest srfsmr) {
    logger.debug("[[[[[[[[[[    onSendRoutingInfoForSMRequest      ]]]]]]]]]]");
    
    try {
        
        MAPDialogSms curDialog = srfsmr.getMAPDialog();
        long invokeId = curDialog.getLocalDialogId();
        
        IMSI imsi = this.mapProvider.getMAPParameterFactory().createIMSI("123499900000001");
        
        /*ArrayList<MAPPrivateExtension> al = new ArrayList<MAPPrivateExtension>();
        al.add(this.mapProvider.getMAPParameterFactory().createMAPPrivateExtension(new long[] { 1, 2, 3, 4 }, new byte[] { 11, 12, 13, 14, 15 }));
        al.add(this.mapProvider.getMAPParameterFactory().createMAPPrivateExtension(new long[] { 1, 2, 3, 6 }, null));
        al.add(this.mapProvider.getMAPParameterFactory().createMAPPrivateExtension(new long[] { 1, 2, 3, 5 }, new byte[] { 21, 22, 23, 24, 25, 26 }));
        MAPExtensionContainer cnt = this.mapProvider.getMAPParameterFactory().createMAPExtensionContainer(al, new byte[] { 31, 32, 33 });
        */
        ISDNAddressString networkNodeNumber = this.mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.ISDN, "11111111111");
        LocationInfoWithLMSI lwlms = this.mapProvider.getMAPParameterFactory().createLocationInfoWithLMSI(networkNodeNumber, null, null, false, null);
        
        // clamp InvokeID
        if (invokeId > 127) { invokeId = 127; }
        if (invokeId < -128) { invokeId = -128; }
        
        curDialog.addSendRoutingInfoForSMResponse(invokeId, imsi, lwlms, null /*cnt*/, Boolean.FALSE, null);

    } catch (MAPException e) {
        logger.error("Error while sending SendRoutingInfoForSMResponse ", e);
    }
    
}
 
Example #7
Source File: SS7Honeypot.java    From SigFW with GNU Affero General Public License v3.0 4 votes vote down vote up
public void onProvideSubscriberInfoRequest(ProvideSubscriberInfoRequest psir) {
    logger.debug("[[[[[[[[[[    onProvideSubscriberInfoRequest      ]]]]]]]]]]");
    
    try {
        
        MAPDialogMobility curDialog = psir.getMAPDialog();
        long invokeId = curDialog.getLocalDialogId();
        
        ISDNAddressString vlrNumber = mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.ISDN, "5555555666");
        LocationNumberMap locationNumber = null;
        LSAIdentity selectedLSAId = null;
        ISDNAddressString mscNumber = null;
        LocationInformationEPS locationInformationEPS = null;
        UserCSGInformation userCSGInformation = null;

        int mcc = HP_MCC;
        int mnc = HP_MNC;
        int lac = HP_LAC;
        int cellId = HP_CELLID;
        int ageOfLocationInformation = HP_AGE_OF_LOCATION;
        GeographicalInformation geographicalInformation = mapProvider.getMAPParameterFactory().createGeographicalInformation(HP_GEO_INFO_d, HP_GEO_INFO_d1, HP_GEO_INFO_d2);
        boolean saiPresent = false;
        GeodeticInformation geodeticInformation = null;
        boolean currentLocationRetrieved = false;
        
        CellGlobalIdOrServiceAreaIdFixedLength cellGlobalIdOrServiceAreaIdFixedLength = mapProvider.getMAPParameterFactory()
                .createCellGlobalIdOrServiceAreaIdFixedLength(mcc, mnc, lac, cellId);
        CellGlobalIdOrServiceAreaIdOrLAI cellGlobalIdOrServiceAreaIdOrLAI = mapProvider.getMAPParameterFactory().createCellGlobalIdOrServiceAreaIdOrLAI(
                cellGlobalIdOrServiceAreaIdFixedLength);
        LocationInformation li = mapProvider.getMAPParameterFactory().createLocationInformation(ageOfLocationInformation, geographicalInformation,
                vlrNumber, locationNumber, cellGlobalIdOrServiceAreaIdOrLAI, null, selectedLSAId, mscNumber, geodeticInformation,
                currentLocationRetrieved, saiPresent, locationInformationEPS, userCSGInformation);

        SubscriberState ss = this.mapProvider.getMAPParameterFactory().createSubscriberState(SubscriberStateChoice.netDetNotReachable, NotReachableReason.imsiDetached);
        
        SubscriberInfo si = this.mapProvider.getMAPParameterFactory().createSubscriberInfo(li, ss, null, null, null, null, null, null, null);
        
        // clamp InvokeID
        if (invokeId > 127) { invokeId = 127; }
        if (invokeId < -128) { invokeId = -128; }
        
        curDialog.addProvideSubscriberInfoResponse(invokeId, si, null);          
        
    } catch (MAPException e) {
        logger.error("Error while sending SendRoutingInfoForSMResponse ", e);
    }
}
 
Example #8
Source File: SS7Server.java    From SigFW with GNU Affero General Public License v3.0 4 votes vote down vote up
private void initSCCP() throws Exception {
    logger.debug("Initializing SCCP Stack ....");
    this.sccpStack = new SccpStackImpl("SctpServerSCCP");
    this.sccpStack.setMtp3UserPart(1, this.serverM3UAMgmt);

    this.sccpStack.setPersistDir(persistDir);

    this.sccpStack.start();
    this.sccpStack.removeAllResourses();

    this.sccpStack.getSccpResource().addRemoteSpc(0, CLIENT_SPC, 0, 0);
    this.sccpStack.getSccpResource().addRemoteSsn(0, CLIENT_SPC, SSN, 0, false);

    this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, SERVER_SPC, NETWORK_INDICATOR, 0);
    this.sccpStack.getRouter().addMtp3Destination(1, 1, CLIENT_SPC, CLIENT_SPC, 0, 255, 255);    
    
    this.sccpProvider = this.sccpStack.getSccpProvider();
    
    
    this.sccpStack.getSccpResource().addRemoteSpc(1, SERVER_SPC, 0, 0);
    this.sccpStack.getSccpResource().addRemoteSsn(1, SERVER_SPC, SSN, 0, false);
    
    //this.sccpStack.setPreviewMode(true);
    
    // SCCP routing table
    GlobalTitle gt = this.sccpProvider.getParameterFactory().createGlobalTitle("", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    this.sccpStack.getRouter().addRoutingAddress(1, this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, CLIENT_SPC, 0));
    
    gt = this.sccpProvider.getParameterFactory().createGlobalTitle("", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    this.sccpStack.getRouter().addRoutingAddress(2, this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, SERVER_SPC, SSN));
    
    gt = this.sccpProvider.getParameterFactory().createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    SccpAddress pattern = this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
    String mask = "K";
    ((RouterImpl) this.sccpStack.getRouter()).addRule(1, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.LOCAL, pattern, mask, 1, -1, null, 0, null);
    
    gt = this.sccpProvider.getParameterFactory().createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    pattern = this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
    mask = "R";
    ((RouterImpl) this.sccpStack.getRouter()).addRule(2, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.REMOTE, pattern, mask, 2, -1, null, 0, null);
    
    
    logger.debug("Initialized SCCP Stack ....");
}
 
Example #9
Source File: SS7Honeypot.java    From SigFW with GNU Affero General Public License v3.0 4 votes vote down vote up
public void onAnyTimeInterrogationRequest(AnyTimeInterrogationRequest atir) {
    logger.debug("[[[[[[[[[[    onAnyTimeInterrogationRequest      ]]]]]]]]]]");
    
    try {
        
        MAPDialogMobility curDialog = atir.getMAPDialog();
        long invokeId = curDialog.getLocalDialogId();
        
        ISDNAddressString vlrNumber = mapProvider.getMAPParameterFactory().createISDNAddressString(AddressNature.international_number, NumberingPlan.ISDN, HP_VLR_NUMBER);
        LocationNumberMap locationNumber = null;
        LSAIdentity selectedLSAId = null;
        ISDNAddressString mscNumber = null;
        LocationInformationEPS locationInformationEPS = null;
        UserCSGInformation userCSGInformation = null;

        int mcc = HP_MCC;
        int mnc = HP_MNC;
        int lac = HP_LAC;
        int cellId = HP_CELLID;
        int ageOfLocationInformation = HP_AGE_OF_LOCATION;
        GeographicalInformation geographicalInformation = mapProvider.getMAPParameterFactory().createGeographicalInformation(HP_GEO_INFO_d, HP_GEO_INFO_d1, HP_GEO_INFO_d2);
        boolean saiPresent = false;
        GeodeticInformation geodeticInformation = null;
        boolean currentLocationRetrieved = false;
        
        CellGlobalIdOrServiceAreaIdFixedLength cellGlobalIdOrServiceAreaIdFixedLength = mapProvider.getMAPParameterFactory()
                .createCellGlobalIdOrServiceAreaIdFixedLength(mcc, mnc, lac, cellId);
        CellGlobalIdOrServiceAreaIdOrLAI cellGlobalIdOrServiceAreaIdOrLAI = mapProvider.getMAPParameterFactory().createCellGlobalIdOrServiceAreaIdOrLAI(
                cellGlobalIdOrServiceAreaIdFixedLength);
        LocationInformation li = mapProvider.getMAPParameterFactory().createLocationInformation(ageOfLocationInformation, geographicalInformation,
                vlrNumber, locationNumber, cellGlobalIdOrServiceAreaIdOrLAI, null, selectedLSAId, mscNumber, geodeticInformation,
                currentLocationRetrieved, saiPresent, locationInformationEPS, userCSGInformation);

        SubscriberState ss = this.mapProvider.getMAPParameterFactory().createSubscriberState(SubscriberStateChoice.netDetNotReachable, NotReachableReason.imsiDetached);
        
        SubscriberInfo si = this.mapProvider.getMAPParameterFactory().createSubscriberInfo(li, ss, null, null, null, null, null, null, null);
        
        // clamp InvokeID
        if (invokeId > 127) { invokeId = 127; }
        if (invokeId < -128) { invokeId = -128; }
        
        curDialog.addAnyTimeInterrogationResponse(invokeId, si, null);          
        
    } catch (MAPException e) {
        logger.error("Error while sending SendRoutingInfoForSMResponse ", e);
    }
}
 
Example #10
Source File: SriSMResp.java    From SigPloit with MIT License 4 votes vote down vote up
private void initSCCP() throws Exception {
       logger.debug("Initializing SCCP Stack ....");
       this.sccpStack = new SccpStackImpl("MapLoadServerSccpStack");
       this.sccpStack.setMtp3UserPart(1, this.serverM3UAMgmt);

       this.sccpStack.start();
       this.sccpStack.removeAllResourses();

       this.sccpStack.getSccpResource().addRemoteSpc(1, CLIENT_SPC, 0, 0);
       this.sccpStack.getSccpResource().addRemoteSsn(1, CLIENT_SPC, SSN_Client, 0, false);



       this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, SERVER_SPC, NETWORK_INDICATOR, 0);
       this.sccpStack.getRouter().addMtp3Destination(1, 1, CLIENT_SPC, CLIENT_SPC, 0, 255, 255);


       this.sccpProvider = this.sccpStack.getSccpProvider();

       // SCCP routing table

       GlobalTitle0100 calling = this.sccpProvider.getParameterFactory().createGlobalTitle
               ("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null,
                       NatureOfAddress.INTERNATIONAL);

//Enter the tested MSIDN that is being queried on, or a mask to represent all the ranges
       GlobalTitle0100 called = this.sccpProvider.getParameterFactory().createGlobalTitle
               ("201124683579", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null,
                       NatureOfAddress.INTERNATIONAL);
       GlobalTitle0100 localHLR = this.sccpProvider.getParameterFactory().createGlobalTitle
               ("201179008244", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null,
                       NatureOfAddress.INTERNATIONAL);


       this.sccpStack.getRouter().addRoutingAddress
               (1, this.sccpProvider.getParameterFactory().createSccpAddress
                       (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, called, SERVER_SPC, SSN_Server));
       this.sccpStack.getRouter().addRoutingAddress
               (2, this.sccpProvider.getParameterFactory().createSccpAddress(
                       RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, calling, CLIENT_SPC, SSN_Client));
       this.sccpStack.getRouter().addRoutingAddress
               (3, this.sccpProvider.getParameterFactory().createSccpAddress
                       (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, localHLR, SERVER_SPC, SSN_Server));



       SccpAddress patternLocal = this.sccpProvider.getParameterFactory().createSccpAddress(
               RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, calling, CLIENT_SPC,SSN_Client );
       SccpAddress patternRemote = this.sccpProvider.getParameterFactory().createSccpAddress
               (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, called, SERVER_SPC,SSN_Server);
       SccpAddress patternHLR = this.sccpProvider.getParameterFactory().createSccpAddress
               (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, localHLR, SERVER_SPC,SSN_Server);

       String maskLocal = "K";
       String maskRemote = "R";

       //translate local GT to its POC+SSN (local rule)GTT
       this.sccpStack.getRouter().addRule
               (1, RuleType.SOLITARY, null,OriginationType.LOCAL, patternLocal, maskLocal, 2, -1, null, 0);
       this.sccpStack.getRouter().addRule
               (2, RuleType.SOLITARY, null, OriginationType.REMOTE, patternRemote, maskRemote, 1, -1, null, 0);
       this.sccpStack.getRouter().addRule
               (3, RuleType.SOLITARY, null, OriginationType.REMOTE, patternHLR, maskRemote, 3, -1, null, 0);


       logger.debug("Initialized SCCP Stack ....");
   }
 
Example #11
Source File: SriSMResp.java    From SigPloit with MIT License 4 votes vote down vote up
@Override
public void onSendRoutingInfoForSMRequest(SendRoutingInfoForSMRequest sendRoutingInfoForSMRequest) {
    try {
        long invokeId = sendRoutingInfoForSMRequest.getInvokeId();

 //Add the MSC number that is serving the user
        ISDNAddressString msc = this.mapProvider.getMAPParameterFactory().createISDNAddressString
            (AddressNature.international_number, NumberingPlan.ISDN,"201111111111");

 //Add the IMSI of the subscriber that is queried 
        IMSI imsi = this.mapProvider.getMAPParameterFactory().createIMSI("602031234567890");
        LMSI lmsi = this.mapProvider.getMAPParameterFactory().createLMSI(new byte[]{(byte)0x65,(byte)0x10,(byte)0xf2,(byte)0x29});
        LocationInfoWithLMSI Location = this.mapProvider.getMAPParameterFactory().createLocationInfoWithLMSI
            (msc, lmsi, null, false, null);

        GlobalTitle0100 GtHlr = this.sccpProvider.getParameterFactory().createGlobalTitle(
                "201179008244",0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY,null,
                NatureOfAddress.INTERNATIONAL);

        GlobalTitle0100 GtSMSC = this.sccpProvider.getParameterFactory().
                createGlobalTitle("441357924680",0,
                        org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY,null,NatureOfAddress.INTERNATIONAL);

        SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().
                createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE,GtHlr,SERVER_SPC,SSN_Server);
        SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory()
                .createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE,GtSMSC,CLIENT_SPC,SSN_Client);

        /*MAPDialogSms dialogSms = this.mapProvider.getMAPServiceSms().createNewDialog
                (MAPApplicationContext.getInstance(MAPApplicationContextName.shortMsgGatewayContext,
                        MAPApplicationContextVersion.version3),callingParty,null,calledParty,null);*/
        MAPDialogSms dialogSms = sendRoutingInfoForSMRequest.getMAPDialog();

        dialogSms.setUserObject(invokeId);

        dialogSms.addSendRoutingInfoForSMResponse(invokeId,imsi,Location,null, false);
        dialogSms.send();

        logger.info("IMSI and MSC GT Address Sent.....");

    } catch (MAPException e) {
        e.printStackTrace();
    }
}
 
Example #12
Source File: UpdateLocationResp.java    From SigPloit with MIT License 4 votes vote down vote up
private void initSCCP() throws Exception {
    logger.debug("Initializing SCCP Stack ....");
    this.sccpStack = new SccpStackImpl("MapLoadServerSccpStack");
    this.sccpStack.setMtp3UserPart(1, this.serverM3UAMgmt);

    this.sccpStack.start();
    this.sccpStack.removeAllResourses();

    this.sccpStack.getSccpResource().addRemoteSpc(1, CLIENT_SPC, 0, 0);
    this.sccpStack.getSccpResource().addRemoteSsn(1, CLIENT_SPC, SSN_Client, 0, false);



    this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, SERVER_SPC, NETWORK_INDICATOR, 0);
    //addMtp3Destination(sapID, destID, firstDPC, lastDPC, firstSls, lastSls, slaMask)
    this.sccpStack.getRouter().addMtp3Destination(1, 1, CLIENT_SPC, CLIENT_SPC, 0, 255, 255);


    this.sccpProvider = this.sccpStack.getSccpProvider();

    // SCCP routing table
    GlobalTitle0100 calling = this.sccpProvider.getParameterFactory().createGlobalTitle
            ("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null,
                    NatureOfAddress.INTERNATIONAL);
    GlobalTitle0100 called = this.sccpProvider.getParameterFactory().createGlobalTitle
            ("20107891234567", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_MOBILE, null,
                    NatureOfAddress.INTERNATIONAL);

    GlobalTitle0100 localHlr = this.sccpProvider.getParameterFactory().createGlobalTitle
            ("201012345678", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null,
                    NatureOfAddress.INTERNATIONAL);
    GlobalTitle0100 localmsc = this.sccpProvider.getParameterFactory().createGlobalTitle
            ("201012344321", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null,
                    NatureOfAddress.INTERNATIONAL);


    this.sccpStack.getRouter().addRoutingAddress
            (1, this.sccpProvider.getParameterFactory().createSccpAddress
                    (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, called, SERVER_SPC, SSN_Server));

    this.sccpStack.getRouter().addRoutingAddress
            (2, this.sccpProvider.getParameterFactory().createSccpAddress(
                    RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, calling, 1, SSN_Client));
    this.sccpStack.getRouter().addRoutingAddress
            (3, this.sccpProvider.getParameterFactory().createSccpAddress
                    (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, localHlr, SERVER_SPC, SSN_Server));
    this.sccpStack.getRouter().addRoutingAddress
            (4, this.sccpProvider.getParameterFactory().createSccpAddress
                    (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, localmsc, SERVER_SPC, SSN_MSC));



    SccpAddress patternLocal = this.sccpProvider.getParameterFactory().createSccpAddress(
            RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, calling, 1,SSN_Client );
    SccpAddress patternRemote = this.sccpProvider.getParameterFactory().createSccpAddress
            (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, called, SERVER_SPC,SSN_Server);
    SccpAddress patternHLR = this.sccpProvider.getParameterFactory().createSccpAddress
            (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, localHlr, SERVER_SPC,SSN_Server);
    SccpAddress patternMSC = this.sccpProvider.getParameterFactory().createSccpAddress
            (RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, localmsc, SERVER_SPC,SSN_MSC);


    String maskLocal = "K";
    String maskRemote = "R"; //change mask to match on any digits after (2010) i.e 2010*

    //translate local GT to its POC+SSN (local rule)GTT
    this.sccpStack.getRouter().addRule
            (1, RuleType.SOLITARY, null,OriginationType.LOCAL, patternLocal, maskLocal, 2, -1, null, 0);
    this.sccpStack.getRouter().addRule
            (2, RuleType.SOLITARY, null, OriginationType.REMOTE, patternRemote, maskRemote, 1, -1, null, 0);
    this.sccpStack.getRouter().addRule
            (3, RuleType.SOLITARY, null, OriginationType.REMOTE, patternHLR, maskRemote, 3, -1, null, 0);
    this.sccpStack.getRouter().addRule
            (4, RuleType.SOLITARY, null, OriginationType.REMOTE, patternMSC, maskRemote, 3, -1, null, 0);




    logger.debug("Initialized SCCP Stack ....");
}
 
Example #13
Source File: UpdateLocationResp.java    From SigPloit with MIT License 4 votes vote down vote up
@Override
public void onUpdateLocationRequest(UpdateLocationRequest updateLocationRequest) {
    try {
        long invokeIdU = updateLocationRequest.getInvokeId();

        ISDNAddressString MscFake = updateLocationRequest.getMscNumber();
        ISDNAddressString VlrFake = updateLocationRequest.getVlrNumber();

        IMSI TargetImsi = updateLocationRequest.getImsi();
        Category category = this.mapProvider.getMAPParameterFactory().createCategory(5);
        ArrayList<ExtBearerServiceCode> bearerServiceList = new ArrayList<ExtBearerServiceCode>();
        ExtBearerServiceCode extBearerServiceCode = this.mapProvider.getMAPParameterFactory()
                .createExtBearerServiceCode(BearerServiceCodeValue.padAccessCA_9600bps);
        bearerServiceList.add(extBearerServiceCode);
        boolean roamingResttrictionDueToUnsupportedFeature = false;
        ISDNAddressString sgsnNumber = this.mapProvider.getMAPParameterFactory().
                createISDNAddressString(AddressNature.international_number,NumberingPlan.ISDN,"201022222222");

        SSCode ssCode = this.mapProvider.getMAPParameterFactory().createSSCode(SupplementaryCodeValue.allForwardingSS);

        //ArrayList<ExtSSInfo> provisionedSS =

        logger.info("New Fake MSC/VLR: "+ MscFake);
        logger.info("Victim IMSI: "+ TargetImsi);

        ISDNAddressString msisdn = this.mapProvider.getMAPParameterFactory().createISDNAddressString(
                AddressNature.international_number, NumberingPlan.ISDN, "2010789123456");

        GlobalTitle0100 GtHlr = this.sccpProvider.getParameterFactory().createGlobalTitle(
                "201012345678",0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY,null,
                NatureOfAddress.INTERNATIONAL);

        GlobalTitle0100 GtMsc = this.sccpProvider.getParameterFactory().
                createGlobalTitle("96512345678",0,
                        org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY,null,NatureOfAddress.INTERNATIONAL);

        SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().
                createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE,GtHlr,SERVER_SPC,SSN_Server);
        SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory()
                .createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE,GtMsc,CLIENT_SPC,SSN_Client);


        MAPDialogMobility dialogMobility = this.mapProvider.getMAPServiceMobility().createNewDialog(
                MAPApplicationContext.getInstance(MAPApplicationContextName.subscriberDataMngtContext,MAPApplicationContextVersion.version3),
                callingParty,null,calledParty,null);

        dialogMobility.addInsertSubscriberDataRequest(TargetImsi,msisdn,category,SubscriberStatus.serviceGranted,null,null,null,null,
                false,null,null,null,null,null,null,null,false,null,null,false,null,15,null,null,
                null,null,null,null,false,null,null,false,sgsnNumber,null,null,false,false,null);



        dialogMobility.send();

        logger.info("InsertSubscriberDataRequest Message Sent....");

    } catch (MAPException e){
        e.printStackTrace();
    }



}
 
Example #14
Source File: UpdateLocationResp.java    From SigPloit with MIT License 4 votes vote down vote up
@Override
public void onInsertSubscriberDataResponse(InsertSubscriberDataResponse insertSubscriberDataResponse) {
    try{

        /*long invokeId = insertSubscriberDataResponse.getInvokeId();
        ISDNAddressString HlrNumber = this.mapProvider.getMAPParameterFactory().createISDNAddressString(
                AddressNature.international_number,NumberingPlan.ISDN,"20109876543211");
        MAPDialogMobility mapDialogMobility = insertSubscriberDataResponse.getMAPDialog();

        mapDialogMobility.setUserObject(invokeId);
        mapDialogMobility.addUpdateLocationResponse(invokeId,HlrNumber,null,false,false);
        mapDialogMobility.send();

        logger.info("UpdateLocationResponse Message Sent...Update Location Completed");
        logger.info("Sending SMS...");*/




        //SMS MT
        AddressString orig_smsc = this.mapProvider.getMAPParameterFactory().createAddressString(AddressNature.international_number,
                NumberingPlan.ISDN,"966123456789");
        IMSI test_imsi = this.mapProvider.getMAPParameterFactory().createIMSI("602027891234567");
        SM_RP_DA sm_rp_da = this.mapProvider.getMAPParameterFactory().createSM_RP_DA(test_imsi);
        SM_RP_OA sm_rp_oa = this.mapProvider.getMAPParameterFactory().createSM_RP_OA_ServiceCentreAddressOA(orig_smsc);

        AddressField oa = new AddressFieldImpl(TypeOfNumber.InternationalNumber,
                NumberingPlanIdentification.ISDNTelephoneNumberingPlan,"2010789123456");


        AbsoluteTimeStampImpl timeStamp = new AbsoluteTimeStampImpl(16,4,3,15,51,18,2);
        ProtocolIdentifierImpl pi = new ProtocolIdentifierImpl(0);


        DataCodingSchemeImpl dcs = new DataCodingSchemeImpl(0); //default gsm 7 bit
        UserDataImpl ud = new UserDataImpl("Hello World!",dcs,null,null);
        SmsDeliverTpduImpl tpdu = new SmsDeliverTpduImpl(false,false,false,false,oa,pi,timeStamp,ud);
        SmsSignalInfoImpl sm_Rp_UI = new SmsSignalInfoImpl(tpdu, null);

        GlobalTitle0100 GtLocalMSC = this.sccpProvider.getParameterFactory().createGlobalTitle(
                "201012345678",0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY,null,
                NatureOfAddress.INTERNATIONAL);

        GlobalTitle0100 GtAttackerMSC = this.sccpProvider.getParameterFactory().
                createGlobalTitle("96512345678",0,
                        org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY,null,NatureOfAddress.INTERNATIONAL);

        SccpAddress callingParty = this.sccpStack.getSccpProvider().getParameterFactory().
                createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE,GtLocalMSC,SERVER_SPC,SSN_MSC);
        SccpAddress calledParty = this.sccpStack.getSccpProvider().getParameterFactory()
                .createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE,GtAttackerMSC,CLIENT_SPC,SSN_MSC);

        MAPDialogSms mapDialogSms = this.mapProvider.getMAPServiceSms().
                createNewDialog(MAPApplicationContext.getInstance(MAPApplicationContextName.shortMsgMTRelayContext,
                        MAPApplicationContextVersion.version2),callingParty,null,calledParty,null);
        mapDialogSms.addForwardShortMessageRequest(sm_rp_da,sm_rp_oa,sm_Rp_UI,false);


        logger.info("Sending SMS...\n");
        mapDialogSms.send();
        logger.info("SMS Sent...");

    } catch (MAPException e){
        e.printStackTrace();
    }

}
 
Example #15
Source File: SS7Honeypot.java    From SigFW with GNU Affero General Public License v3.0 4 votes vote down vote up
private void initSCCP() throws Exception {
    logger.debug("Initializing SCCP Stack ....");
    this.sccpStack = new SccpStackImpl("SctpServerSCCP");
    this.sccpStack.setMtp3UserPart(1, this.serverM3UAMgmt);

    this.sccpStack.setPersistDir(persistDir);

    this.sccpStack.start();
    this.sccpStack.removeAllResourses();

    this.sccpStack.getSccpResource().addRemoteSpc(0, CLIENT_SPC, 0, 0);
    this.sccpStack.getSccpResource().addRemoteSsn(0, CLIENT_SPC, 6, 0, false);
    this.sccpStack.getSccpResource().addRemoteSsn(1, CLIENT_SPC, 7, 0, false);
    this.sccpStack.getSccpResource().addRemoteSsn(2, CLIENT_SPC, 8, 0, false);
    this.sccpStack.getSccpResource().addRemoteSsn(3, CLIENT_SPC, 9, 0, false);

    this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, SERVER_SPC, NETWORK_INDICATOR, 0);
    this.sccpStack.getRouter().addMtp3Destination(1, 1, CLIENT_SPC, CLIENT_SPC, 0, 255, 255);    
    
    this.sccpProvider = this.sccpStack.getSccpProvider();
    
    this.sccpProvider.registerSccpListener(6, this);
    this.sccpProvider.registerSccpListener(7, this);
    this.sccpProvider.registerSccpListener(8, this);
    
    
    this.sccpStack.getSccpResource().addRemoteSpc(1, SERVER_SPC, 0, 0);
    this.sccpStack.getSccpResource().addRemoteSsn(4, SERVER_SPC, 6, 0, false);
    this.sccpStack.getSccpResource().addRemoteSsn(5, SERVER_SPC, 7, 0, false);
    this.sccpStack.getSccpResource().addRemoteSsn(6, SERVER_SPC, 8, 0, false);
    this.sccpStack.getSccpResource().addRemoteSsn(7, SERVER_SPC, 9, 0, false);
    
    //this.sccpStack.setPreviewMode(true);
    
    // SCCP routing table
    GlobalTitle gt = this.sccpProvider.getParameterFactory().createGlobalTitle("", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    this.sccpStack.getRouter().addRoutingAddress(1, this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, CLIENT_SPC, 0));
    
    gt = this.sccpProvider.getParameterFactory().createGlobalTitle("", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    this.sccpStack.getRouter().addRoutingAddress(2, this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, SERVER_SPC, SSN));
    
    gt = this.sccpProvider.getParameterFactory().createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    SccpAddress pattern = this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
    String mask = "K";
    ((RouterImpl) this.sccpStack.getRouter()).addRule(1, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.LOCAL, pattern, mask, 1, -1, null, 0, null);
    
    gt = this.sccpProvider.getParameterFactory().createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    pattern = this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
    mask = "K";
    ((RouterImpl) this.sccpStack.getRouter()).addRule(2, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.REMOTE, pattern, mask, 2, -1, null, 0, null);
    
    logger.debug("Initialized SCCP Stack ....");
}
 
Example #16
Source File: Server.java    From gmlc with GNU Affero General Public License v3.0 4 votes vote down vote up
@Override
public void onAnyTimeInterrogationRequest(AnyTimeInterrogationRequest atiReq) {

  if (logger.isDebugEnabled()) {
    logger.debug(
        String.format("onAnyTimeInterrogationRequest for DialogId=%d", atiReq.getMAPDialog().getLocalDialogId()));
  }
  if (logger.isInfoEnabled()) {
    logger.info(String.format("onAnyTimeInterrogationRequest for DialogId=%d", atiReq.getMAPDialog().getLocalDialogId()));
  } /*else {
          logger.warn(String.format("onAnyTimeInterrogationRequest for DialogId=%d", atiReq.getMAPDialog().getLocalDialogId()));
      }*/

  try {
    long invokeId = atiReq.getInvokeId();
    MAPDialogMobility mapDialogMobility = atiReq.getMAPDialog();
    mapDialogMobility.setUserObject(invokeId);

    MAPParameterFactoryImpl mapFactory = new MAPParameterFactoryImpl();

    // Create Subscriber Information parameters including Location Information and Subscriber State
    // for concerning MAP operation
    int mcc, mnc, lac, cellIdOrServiceAreaCode;
    mcc = 748;
    mnc = 1;
    lac = 23;
    cellIdOrServiceAreaCode = 369;
    CellGlobalIdOrServiceAreaIdFixedLength cellGlobalIdOrServiceAreaIdFixedLength = mapFactory
        .createCellGlobalIdOrServiceAreaIdFixedLength(mcc, mnc, lac, cellIdOrServiceAreaCode);
    CellGlobalIdOrServiceAreaIdOrLAI cellGlobalIdOrServiceAreaIdOrLAI = mapFactory
        .createCellGlobalIdOrServiceAreaIdOrLAI(cellGlobalIdOrServiceAreaIdFixedLength);
    ISDNAddressString vlrNumber = new ISDNAddressStringImpl(AddressNature.international_number,
        org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, "5982123007");
    ISDNAddressString mscNumber = new ISDNAddressStringImpl(AddressNature.international_number,
        org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, "5982123007");
    Integer ageOfLocationInformation = 0; // ageOfLocationInformation
    GeographicalInformation geographicalInformation = null;
    LocationNumberMap locationNumber = null;
    MAPExtensionContainer mapExtensionContainer = null;
    LSAIdentity selectedLSAId = null;
    GeodeticInformation geodeticInformation = null;
    boolean currentLocationRetrieved = false;
    boolean saiPresent = false;
    LocationInformationEPS locationInformationEPS = null;
    UserCSGInformation userCSGInformation = null;
    LocationInformationGPRS locationInformationGPRS = null;
    PSSubscriberState psSubscriberState = null;
    IMEI imei = null;
    MSClassmark2 msClassmark2 = null;
    GPRSMSClass gprsMSClass = null;
    MNPInfoRes mnpInfoRes = null;
    SubscriberStateChoice subscriberStateChoice = SubscriberStateChoice.assumedIdle;
    // 0=assumedIdle, 1=camelBusy, 2=notProvidedFromVLR
    NotReachableReason notReachableReason = null;

    LocationInformation locationInformation = mapFactory.createLocationInformation(ageOfLocationInformation,
        geographicalInformation, vlrNumber, locationNumber, cellGlobalIdOrServiceAreaIdOrLAI, mapExtensionContainer,
        selectedLSAId, mscNumber, geodeticInformation, currentLocationRetrieved, saiPresent, locationInformationEPS,
        userCSGInformation);

    SubscriberState subscriberState = mapFactory.createSubscriberState(subscriberStateChoice, notReachableReason);

    SubscriberInfo subscriberInfo = mapFactory.createSubscriberInfo(locationInformation, subscriberState,
        mapExtensionContainer, locationInformationGPRS, psSubscriberState, imei, msClassmark2, gprsMSClass,
        mnpInfoRes);

    mapDialogMobility.addAnyTimeInterrogationResponse(invokeId, subscriberInfo, mapExtensionContainer);

    // This will initiate the TC-BEGIN with INVOKE component
    mapDialogMobility.close(false);

  } catch (MAPException mapException) {
    logger.error("MAP Exception while processing AnyTimeInterrogationRequest ", mapException);
  } catch (Exception e) {
    logger.error("Exception while processing AnyTimeInterrogationRequest ", e);
  }

}
 
Example #17
Source File: Server.java    From gmlc with GNU Affero General Public License v3.0 4 votes vote down vote up
@Override
  public void onSendRoutingInfoForLCSRequest(SendRoutingInfoForLCSRequest sendRoutingInforForLCSRequest) {

    if (logger.isDebugEnabled()) {
      logger.debug(
          String.format("onSendRoutingInfoForLCSRequest for DialogId=%d", sendRoutingInforForLCSRequest.getMAPDialog().getLocalDialogId()));
    }
    if (logger.isInfoEnabled()) {
      logger.info(String.format("onAnyTimeInterrogationRequest for DialogId=%d", sendRoutingInforForLCSRequest.getMAPDialog().getLocalDialogId()));
    }

    try {
      long invokeId = sendRoutingInforForLCSRequest.getInvokeId();
      MAPDialogLsm mapDialogLsm = sendRoutingInforForLCSRequest.getMAPDialog();
      mapDialogLsm.setUserObject(invokeId);

      // Create Routing Information parameters for concerning MAP operation
      MAPParameterFactoryImpl mapFactory = new MAPParameterFactoryImpl();
      String mscAddress = "5982123007";
      String sgsnAddress = "5982123009";
      ISDNAddressString mscNumber = new ISDNAddressStringImpl(AddressNature.international_number,
          org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, mscAddress);
      ISDNAddressString sgsnNumber = new ISDNAddressStringImpl(AddressNature.international_number,
          org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, sgsnAddress);
      AdditionalNumber additionalNumber = new AdditionalNumberImpl(null, sgsnNumber);
      String lmsiStr = "12345678";
      byte[] Lmsi = lmsiStr.getBytes();
      LMSI lmsi = mapFactory.createLMSI(Lmsi);
      Boolean gprsNodeIndicator = false;
      boolean lcsCapabilitySetRelease98_99 = true;
      boolean lcsCapabilitySetRelease4 = true;
      boolean lcsCapabilitySetRelease5 = true;
      boolean lcsCapabilitySetRelease6 = true;
      boolean lcsCapabilitySetRelease7 = false;
      SupportedLCSCapabilitySets supportedLCSCapabilitySets = new SupportedLCSCapabilitySetsImpl(lcsCapabilitySetRelease98_99, lcsCapabilitySetRelease4,
          lcsCapabilitySetRelease5, lcsCapabilitySetRelease6, lcsCapabilitySetRelease7);
      lcsCapabilitySetRelease7 = true;
      SupportedLCSCapabilitySets additionalLCSCapabilitySets = new SupportedLCSCapabilitySetsImpl(lcsCapabilitySetRelease98_99, lcsCapabilitySetRelease4,
          lcsCapabilitySetRelease5, lcsCapabilitySetRelease6, lcsCapabilitySetRelease7);
      MAPExtensionContainer mapExtensionContainer = null;
      byte[] mmeNom = new BigInteger("00112233445566778899", 16).toByteArray();
      DiameterIdentity mmeName = new DiameterIdentityImpl(mmeNom);
      byte[] aaaSN = new BigInteger("0011223344556677889900", 16).toByteArray();
      DiameterIdentity aaaServerName = new DiameterIdentityImpl(aaaSN);
      ISDNAddressString isdnAdd = new ISDNAddressStringImpl(AddressNature.international_number,
          org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, "59899077937");
      SubscriberIdentity msisdn = new SubscriberIdentityImpl(isdnAdd);
      byte[] visitedGmlcAddress = new BigInteger("112233445500", 16).toByteArray();
      GSNAddress vGmlcAddress = new GSNAddressImpl(visitedGmlcAddress);
      byte[] homeGmlcAddress = new BigInteger("11223344556677", 16).toByteArray();
      GSNAddress hGmlcAddress = new GSNAddressImpl(homeGmlcAddress);
      byte[] pivacyProfileRegisterAddress = new BigInteger("112233445566", 16).toByteArray();
      GSNAddress pprAddress = new GSNAddressImpl(pivacyProfileRegisterAddress);
      byte[] addVGmlcAddress = new BigInteger("8122334455", 16).toByteArray();
      GSNAddress additionalVGmlcAddress = new GSNAddressImpl(addVGmlcAddress);

      LCSLocationInfo lcsLocationInfo = mapFactory.createLCSLocationInfo(mscNumber, lmsi, mapExtensionContainer, gprsNodeIndicator,
          additionalNumber, supportedLCSCapabilitySets, additionalLCSCapabilitySets, mmeName, aaaServerName);
//            addSendRoutingInfoForLCSResponse(long invokeId, SubscriberIdentity targetMS, LCSLocationInfo lcsLocationInfo,
//                                             MAPExtensionContainer extensionContainer,
//                                            byte[] vgmlcAddress, byte[] hGmlcAddress, byte[] pprAddress, byte[] additionalVGmlcAddress)
      mapDialogLsm.addSendRoutingInfoForLCSResponse(invokeId, msisdn, lcsLocationInfo, mapExtensionContainer, vGmlcAddress, hGmlcAddress,
          pprAddress, additionalVGmlcAddress);
      // This will initiate the TC-BEGIN with INVOKE component
      mapDialogLsm.close(false);

    } catch (MAPException mapException) {
      logger.error("MAP Exception while processing onSendRoutingInfoForLCSRequest ", mapException);
    } catch (Exception e) {
      logger.error("Exception while processing onSendRoutingInfoForLCSRequest ", e);
    }
  }
 
Example #18
Source File: Server.java    From gmlc with GNU Affero General Public License v3.0 4 votes vote down vote up
@Override
  public void onProvideSubscriberLocationRequest(ProvideSubscriberLocationRequest provideSubscriberLocationRequest) {

    if (logger.isDebugEnabled()) {
      logger.debug(
          String.format("onProvideSubscriberLocationRequest for DialogId=%d", provideSubscriberLocationRequest.getMAPDialog().getLocalDialogId()));
    }
    if (logger.isInfoEnabled()) {
      logger.info(String.format("onProvideSubscriberLocationRequest for DialogId=%d", provideSubscriberLocationRequest.getMAPDialog().getLocalDialogId()));
    }

    try {
      long invokeId = provideSubscriberLocationRequest.getInvokeId();
      MAPDialogLsm mapDialogLsm = provideSubscriberLocationRequest.getMAPDialog();
      mapDialogLsm.setUserObject(invokeId);

      // Create Routing Information parameters for concerning MAP operation
      MAPParameterFactoryImpl mapFactory = new MAPParameterFactoryImpl();
      ISDNAddressString mscNumber = new ISDNAddressStringImpl(AddressNature.international_number,
          org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, "5982123007");
      ISDNAddressString sgsnNumber = new ISDNAddressStringImpl(AddressNature.international_number,
          org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, "5982123009");
      String lmsiStr = "87654321";
      byte[] Lmsi = lmsiStr.getBytes();
      LMSI lmsi = mapFactory.createLMSI(Lmsi);
      byte[] eGeographicalInformation = new BigInteger("014321a10022337799", 16).toByteArray();
      ExtGeographicalInformation extGeographicalInformation = mapFactory.createExtGeographicalInformation(eGeographicalInformation);
      String posDataInfo = "55338901";
      byte[] posDataInformation = posDataInfo.getBytes();
      PositioningDataInformation positioningDataInformation = mapFactory.createPositioningDataInformation(posDataInformation);
      byte[] utranData = new BigInteger("43210987654321", 16).toByteArray();
      UtranPositioningDataInfo utranPositioningDataInfo = new UtranPositioningDataInfoImpl(utranData);
      Integer ageOfLocationEstimate = 1;
      byte[] addLocationEstimate = new BigInteger("5533a100223377", 16).toByteArray();
      AddGeographicalInformation additionalLocationEstimate = mapFactory.createAddGeographicalInformation(addLocationEstimate);
/*
            long[] oid = {0, 0, 17, 773, 1, 1, 1};
            String pExtData = "1144":
            byte[] privateExtData = pExtData.getBytes();
            MAPPrivateExtension mapPrivateExtension = new MAPPrivateExtensionImpl(oid, privateExtData);
            ArrayList<MAPPrivateExtension> mapPrivateExtensions = new ArrayList<MAPPrivateExtension>();
            mapPrivateExtensions.add(mapPrivateExtension);
            String pcsExt = "1033";
            byte[] pcsExtensions = pcsExt.getBytes();
            MAPExtensionContainer mapExtensionContainer = new MAPExtensionContainerImpl(mapPrivateExtensions, pcsExtensions);
*/
      MAPExtensionContainer mapExtensionContainer = null;
      Boolean deferredMTLRResponseIndicator = true;
      int mcc, mnc, lac, cellIdOrServiceAreaCode;
      mcc = 748;
      mnc = 1;
      lac = 23;
      cellIdOrServiceAreaCode = 369;
      CellGlobalIdOrServiceAreaIdFixedLength cellGlobalIdOrServiceAreaIdFixedLength = mapFactory
          .createCellGlobalIdOrServiceAreaIdFixedLength(mcc, mnc, lac, cellIdOrServiceAreaCode);
      CellGlobalIdOrServiceAreaIdOrLAI cellGlobalIdOrServiceAreaIdOrLAI = mapFactory
          .createCellGlobalIdOrServiceAreaIdOrLAI(cellGlobalIdOrServiceAreaIdFixedLength);
      Boolean saiPresent = true;
      AccuracyFulfilmentIndicator accuracyFulfilmentIndicator = AccuracyFulfilmentIndicator.getAccuracyFulfilmentIndicator(0);
      // AccuracyFulfilmentIndicator ::= ENUMERATED { requestedAccuracyFulfilled (0), requestedAccuracyNotFulfilled (1), ... }
      String velEstStr = "00000001";
      byte[] velEst = velEstStr.getBytes();
      VelocityEstimate velocityEstimate = mapFactory.createVelocityEstimate(velEst);
      Boolean moLrShortCircuitIndicator = true;
      byte[] gGanss = new BigInteger("666601019999", 16).toByteArray();
      GeranGANSSpositioningData geranGANSSpositioningData = new GeranGANSSpositioningDataImpl(gGanss);
      byte[] uGanss = new BigInteger("777701019898", 16).toByteArray();
      UtranGANSSpositioningData utranGANSSpositioningData = new UtranGANSSpositioningDataImpl(uGanss);
      ServingNodeAddress servingNodeAddress = mapFactory.createServingNodeAddressMscNumber(mscNumber);

      mapDialogLsm.addProvideSubscriberLocationResponse(invokeId, extGeographicalInformation, positioningDataInformation, utranPositioningDataInfo,
          ageOfLocationEstimate, additionalLocationEstimate, mapExtensionContainer, deferredMTLRResponseIndicator, cellGlobalIdOrServiceAreaIdOrLAI,
          saiPresent, accuracyFulfilmentIndicator, velocityEstimate, moLrShortCircuitIndicator, geranGANSSpositioningData, utranGANSSpositioningData,
          servingNodeAddress);
      // This will initiate the TC-BEGIN with INVOKE component
      mapDialogLsm.close(false);

    } catch (MAPException mapException) {
      logger.error("MAP Exception while processing onProvideSubscriberLocationRequest ", mapException);
    } catch (Exception e) {
      logger.error("Exception while processing onProvideSubscriberLocationRequest ", e);
    }

  }
 
Example #19
Source File: Server.java    From gmlc with GNU Affero General Public License v3.0 4 votes vote down vote up
@Override
  public void onSubscriberLocationReportRequest(SubscriberLocationReportRequest subscriberLocationReportRequest) {

    if (logger.isDebugEnabled()) {
      logger.debug(
          String.format("onSubscriberLocationReportRequest for DialogId=%d", subscriberLocationReportRequest.getMAPDialog().getLocalDialogId()));
    }
    if (logger.isInfoEnabled()) {
      logger.info(String.format("onSubscriberLocationReportRequest for DialogId=%d", subscriberLocationReportRequest.getMAPDialog().getLocalDialogId()));
    }

    try {
      long invokeId = subscriberLocationReportRequest.getInvokeId();
      MAPDialogLsm mapDialogLsm = subscriberLocationReportRequest.getMAPDialog();
      mapDialogLsm.setUserObject(invokeId);

      // Create Routing Information parameters for concerning MAP operation
      MAPParameterFactoryImpl mapFactory = new MAPParameterFactoryImpl();
      ISDNAddressString naEsrd = new ISDNAddressStringImpl(AddressNature.international_number,
          org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, "5982123007");
      ISDNAddressString naEsrk = new ISDNAddressStringImpl(AddressNature.international_number,
          org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan.ISDN, "5982123009");
/*
            long[] oid = {0, 0, 17, 773, 1, 1, 1};
            String privExtData = "1144";
            byte[] privateExtData = privExtData.getBytes();
            MAPPrivateExtension mapPrivateExtension = new MAPPrivateExtensionImpl(oid, privateExtData);
            ArrayList<MAPPrivateExtension> mapPrivateExtensions = new ArrayList<MAPPrivateExtension>();
            mapPrivateExtensions.add(mapPrivateExtension);
            String pcsExtStr = "1033";
            byte[] pcsExtensions = pcsExtStr.getBytes();
            MAPExtensionContainer mapExtensionContainer = new MAPExtensionContainerImpl(mapPrivateExtensions, pcsExtensions);
*/
      MAPExtensionContainer mapExtensionContainer = null;

      mapDialogLsm.addSubscriberLocationReportResponse(invokeId, naEsrd, naEsrk, mapExtensionContainer);

      // This will initiate the TC-BEGIN with INVOKE component
      mapDialogLsm.close(false);

    } catch (MAPException mapException) {
      logger.error("MAP Exception while processing onSubscriberLocationReportRequest ", mapException);
    } catch (Exception e) {
      logger.error("Exception while processing onSubscriberLocationReportRequest ", e);
    }

  }
 
Example #20
Source File: SS7Client.java    From SigFW with GNU Affero General Public License v3.0 2 votes vote down vote up
private void initSCCP() throws Exception {
    logger.debug("Initializing SCCP Stack ....");
    this.sccpStack = new SccpStackImpl("SctpClientSCCP");
    
    this.clientM3UAMgmt.setPersistDir(persistDir);
    
    this.sccpStack.setMtp3UserPart(1, this.clientM3UAMgmt);

    this.sccpStack.start();
    this.sccpStack.removeAllResourses();

    this.sccpStack.getSccpResource().addRemoteSpc(0, SERVER_SPC, 0, 0);
    this.sccpStack.getSccpResource().addRemoteSsn(0, SERVER_SPC, SSN, 0, false);

    this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, CLIENT_SPC, NETWORK_INDICATOR, 0);
    this.sccpStack.getRouter().addMtp3Destination(1, 1, SERVER_SPC, SERVER_SPC, 0, 255, 255);
    
    
    this.sccpProvider = this.sccpStack.getSccpProvider();
    
    
    //this.sccpStack.getSccpResource().addRemoteSpc(1, SERVER_SPC, 0, 0);
    //this.sccpStack.getSccpResource().addRemoteSsn(1, SERVER_SPC, SSN, 0, false);

    // SCCP routing table
    GlobalTitle gt = this.sccpProvider.getParameterFactory().createGlobalTitle("", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
             
    this.sccpStack.getRouter().addRoutingAddress(1, this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, SERVER_SPC, 0));
    //this.sccpStack.getRouter().addRoutingAddress(2, this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, gt, SERVER_SPC, SSN));

    gt = this.sccpProvider.getParameterFactory().createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    SccpAddress pattern = this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
    String mask = "K";
    ((RouterImpl) this.sccpStack.getRouter()).addRule(1, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.LOCAL, pattern, mask, 1, -1, null, 0, null);
    pattern = this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
    mask = "R";
    ((RouterImpl) this.sccpStack.getRouter()).addRule(2, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.REMOTE, pattern, mask, 1, -1, null, 0, null);
    
    
    logger.debug("Initialized SCCP Stack ....");
}
 
Example #21
Source File: SS7ClientLiveInput.java    From SigFW with GNU Affero General Public License v3.0 2 votes vote down vote up
private void initSCCP() throws Exception {
    logger.debug("Initializing SCCP Stack ....");
    this.sccpStack = new SccpStackImpl("SctpClientLiveInputSCCP");
    
    this.sccpStack.setPersistDir(persistDir);
    
    this.sccpStack.setMtp3UserPart(1, this.clientM3UAMgmt);

    this.sccpStack.start();
    this.sccpStack.removeAllResourses();

    this.sccpStack.getSccpResource().addRemoteSpc(0, SERVER_SPC, 0, 0);
    this.sccpStack.getSccpResource().addRemoteSsn(0, SERVER_SPC, SSN, 0, false);

    this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, CLIENT_SPC, NETWORK_INDICATOR, 0);
    this.sccpStack.getRouter().addMtp3Destination(1, 1, SERVER_SPC, SERVER_SPC, 0, 255, 255);
    
    
    this.sccpProvider = this.sccpStack.getSccpProvider();
    
    
    //this.sccpStack.getSccpResource().addRemoteSpc(1, SERVER_SPC, 0, 0);
    //this.sccpStack.getSccpResource().addRemoteSsn(1, SERVER_SPC, SSN, 0, false);

    // SCCP routing table
    GlobalTitle gt = this.sccpProvider.getParameterFactory().createGlobalTitle("", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
             
    this.sccpStack.getRouter().addRoutingAddress(1, this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, SERVER_SPC, 0));
    //this.sccpStack.getRouter().addRoutingAddress(2, this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, gt, SERVER_SPC, SSN));

    gt = this.sccpProvider.getParameterFactory().createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, null, NatureOfAddress.INTERNATIONAL);
    SccpAddress pattern = this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
    String mask = "K";
    ((RouterImpl) this.sccpStack.getRouter()).addRule(1, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.LOCAL, pattern, mask, 1, -1, null, 0, null);
    pattern = this.sccpProvider.getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0);
    mask = "R";
    ((RouterImpl) this.sccpStack.getRouter()).addRule(2, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.REMOTE, pattern, mask, 1, -1, null, 0, null);
    
    
    logger.debug("Initialized SCCP Stack ....");
}