)>}]
شركة التطبيقات المتكاملة لتصميم وبرمجة البرمجيات الخاصة ش.ش.و.
Integrated Applications Programming Company
Home » Code Library » Asbr (Ia.Ftn.Cl.Model.Data.Huawei)

Public general use code classes and xml files that we've compiled and used over the years:

AGCF Users (ASBR) support class for Huawei's Fixed Telecommunications Network (FTN) data model.

    1: using Microsoft.EntityFrameworkCore;
    2: using System;
    3: using System.Collections.Generic;
    4: using System.Data;
    5: using System.Linq;
    6: using System.Text;
    7:  
    8: namespace Ia.Ftn.Cl.Model.Data.Huawei
    9: {
   10:     ////////////////////////////////////////////////////////////////////////////
   11:  
   12:     /// <summary publish="true">
   13:     /// AGCF Users (ASBR) support class for Huawei's Fixed Telecommunications Network (FTN) data model.
   14:     /// </summary>
   15:     /// 
   16:     /// <remarks> 
   17:     /// Copyright © 2019-2020 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   18:     ///
   19:     /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
   20:     /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
   21:     ///
   22:     /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
   23:     /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
   24:     /// 
   25:     /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
   26:     /// 
   27:     /// Copyright notice: This notice may not be removed or altered from any source distribution.
   28:     /// </remarks> 
   29:     public class Asbr
   30:     {
   31:         /// <summary/>
   32:         public Asbr() { }
   33:  
   34:         ////////////////////////////////////////////////////////////////////////////
   35:  
   36:         /// <summary>
   37:         ///
   38:         /// </summary>
   39:         public static bool Update(Ia.Ftn.Cl.Model.Business.Huawei.SoftX.Response response, out Ia.Cl.Models.Result result)
   40:         {
   41:             bool isUpdated;
   42:             int readItemCount, existingItemCount, insertedItemCount, updatedItemCount, deletedItemCount;
   43:             string id, mgwId, eid, queryImpuSipDomain, queryCommand;
   44:             Ia.Ftn.Cl.Model.Huawei.Asbr asbr, newAsbr;
   45:             Ia.Ftn.Cl.Model.Huawei.Mgw mgw;
   46:  
   47:             isUpdated = false;
   48:             readItemCount = existingItemCount = insertedItemCount = updatedItemCount = deletedItemCount = 0;
   49:             result = new Ia.Cl.Models.Result();
   50:  
   51:             queryCommand = response.CommandString;
   52:  
   53:             // LST ASBR: PUI="sip:+96525449809@ims.moc.kw";
   54:             queryImpuSipDomain = Ia.Cl.Models.Default.Match(queryCommand, @"PUI=""(.+?)""");
   55:  
   56:             readItemCount = response.Count;
   57:  
   58:             if (response.QueryDictionary.ContainsKey("EID"))
   59:             {
   60:                 eid = response.QueryDictionary["EID"];
   61:  
   62:                 mgwId = Ia.Ftn.Cl.Model.Business.Huawei.Mgw.MgwId(response.NetworkElement, eid);
   63:  
   64:                 using (var db = new Ia.Ftn.Cl.Model.Db())
   65:                 {
   66:                     mgw = (from m in db.Mgws where m.Id == mgwId select m).SingleOrDefault();
   67:  
   68:                     if (mgw != null)
   69:                     {
   70:                         id = Ia.Ftn.Cl.Model.Business.Huawei.Asbr.AsbrId(response.NetworkElement, queryImpuSipDomain);
   71:  
   72:                         asbr = (from a in db.Asbrs where /*a.Mgw.Id == mgwId &&*/ a.Id == id select a).SingleOrDefault();
   73:  
   74:                         if (response.Count >= 1)
   75:                         {
   76:                             newAsbr = new Ia.Ftn.Cl.Model.Huawei.Asbr()
   77:                             {
   78:                                 Id = id,
   79:                                 PUI = queryImpuSipDomain,
   80:                                 NetworkElement = response.NetworkElement,
   81:                                 PRI = response.QueryDictionary.ContainsKey("PRI") ? response.QueryDictionary["PRI"] : string.Empty,
   82:                                 REGTP = response.QueryDictionary.ContainsKey("REGTP") ? response.QueryDictionary["REGTP"] : string.Empty,
   83:                                 DID = response.QueryDictionary.ContainsKey("DID") ? response.QueryDictionary["DID"] : string.Empty,
   84:                                 DIDG = response.QueryDictionary.ContainsKey("DIDG") ? response.QueryDictionary["DIDG"] : string.Empty,
   85:                                 TET = response.QueryDictionary.ContainsKey("TET") ? response.QueryDictionary["TET"] : string.Empty,
   86:                                 MN = response.QueryDictionary.ContainsKey("MN") ? int.Parse(response.QueryDictionary["MN"]) : 0,
   87:                                 MGWID = response.QueryDictionary.ContainsKey("MGWID") ? Ia.Ftn.Cl.Model.Business.Huawei.SoftX.SpecialIntegerParameterHandling("MGWID", response.QueryDictionary["MGWID"]) : 0,
   88:                                 TEN = response.QueryDictionary.ContainsKey("TEN") ? response.QueryDictionary["TEN"] : string.Empty,
   89:                                 EDESC = response.QueryDictionary.ContainsKey("EDESC") ? response.QueryDictionary["EDESC"] : string.Empty,
   90:                                 EID = response.QueryDictionary.ContainsKey("EID") ? response.QueryDictionary["EID"] : string.Empty,
   91:                                 RGN = response.QueryDictionary.ContainsKey("RGN") ? response.QueryDictionary["RGN"] : string.Empty,
   92:                                 TID = response.QueryDictionary.ContainsKey("TID") ? response.QueryDictionary["TID"] : string.Empty,
   93:                                 LKS = response.QueryDictionary.ContainsKey("LKS") ? response.QueryDictionary["LKS"] : string.Empty,
   94:                                 IID = response.QueryDictionary.ContainsKey("IID") ? int.Parse(response.QueryDictionary["IID"]) : 0,
   95:                                 SGIAD = response.QueryDictionary.ContainsKey("SGIAD") ? int.Parse(response.QueryDictionary["SGIAD"]) : 0,
   96:                                 ISDN = response.QueryDictionary.ContainsKey("ISDN") ? response.QueryDictionary["ISDN"] : string.Empty,
   97:                                 ISA = response.QueryDictionary.ContainsKey("ISA") ? response.QueryDictionary["ISA"] : string.Empty,
   98:                                 TRUNKGP = response.QueryDictionary.ContainsKey("TRUNKGP") ? response.QueryDictionary["TRUNKGP"] : string.Empty,
   99:                                 V5IID = response.QueryDictionary.ContainsKey("V5IID") ? response.QueryDictionary["V5IID"] : string.Empty,
  100:                                 L3ADDR = response.QueryDictionary.ContainsKey("L3ADDR") ? int.Parse(response.QueryDictionary["L3ADDR"]) : 0,
  101:                                 B1NO = response.QueryDictionary.ContainsKey("B1NO") ? int.Parse(response.QueryDictionary["B1NO"]) : 0,
  102:                                 B2NO = response.QueryDictionary.ContainsKey("B2NO") ? int.Parse(response.QueryDictionary["B2NO"]) : 0,
  103:                                 ISDNDS = response.QueryDictionary.ContainsKey("ISDNDS") ? response.QueryDictionary["ISDNDS"] : string.Empty,
  104:                                 PLF = response.QueryDictionary.ContainsKey("PLF") ? bool.Parse(response.QueryDictionary["PLF"]) : false,
  105:                                 TS = response.QueryDictionary.ContainsKey("TS") ? Ia.Ftn.Cl.Model.Business.Huawei.SoftX.SpecialBooleanParameterHandling("TS", response.QueryDictionary["TS"]) : false,
  106:                                 DT = response.QueryDictionary.ContainsKey("DT") ? response.QueryDictionary["DT"] : string.Empty,
  107:                                 HNID = response.QueryDictionary.ContainsKey("HNID") ? response.QueryDictionary["HNID"] : string.Empty,
  108:                                 NETID = response.QueryDictionary.ContainsKey("NETID") ? response.QueryDictionary["NETID"] : string.Empty,
  109:                                 NETINFO = response.QueryDictionary.ContainsKey("NETINFO") ? response.QueryDictionary["NETINFO"] : string.Empty,
  110:                                 PHNCON = response.QueryDictionary.ContainsKey("PHNCON") ? response.QueryDictionary["PHNCON"] : string.Empty,
  111:                                 DIGMAP = response.QueryDictionary.ContainsKey("DIGMAP") ? response.QueryDictionary["DIGMAP"] : string.Empty,
  112:                                 GLOBDMAPIDX = response.QueryDictionary.ContainsKey("GLOBDMAPIDX") ? response.QueryDictionary["GLOBDMAPIDX"] : string.Empty,
  113:                                 PWD = response.QueryDictionary.ContainsKey("PWD") ? response.QueryDictionary["PWD"] : string.Empty,
  114:                                 SGN = response.QueryDictionary.ContainsKey("SGN") ? response.QueryDictionary["SGN"] : string.Empty,
  115:                                 SOCGN = response.QueryDictionary.ContainsKey("SOCGN") ? response.QueryDictionary["SOCGN"] : string.Empty,
  116:                                 EMGCN = response.QueryDictionary.ContainsKey("EMGCN") ? response.QueryDictionary["EMGCN"] : string.Empty,
  117:                                 DP = response.QueryDictionary.ContainsKey("DP") ? response.QueryDictionary["DP"] : string.Empty,
  118:                                 DR = response.QueryDictionary.ContainsKey("DR") ? response.QueryDictionary["DR"] : string.Empty,
  119:                                 CONF = response.QueryDictionary.ContainsKey("CONF") ? response.QueryDictionary["CONF"] : string.Empty,
  120:                                 CLIPMD = response.QueryDictionary.ContainsKey("CLIPMD") ? response.QueryDictionary["CLIPMD"] : string.Empty,
  121:                                 IFMIMN = response.QueryDictionary.ContainsKey("IFMIMN") ? int.Parse(response.QueryDictionary["IFMIMN"]) : 0,
  122:                                 CODEC = response.QueryDictionary.ContainsKey("CODEC") ? response.QueryDictionary["CODEC"] : string.Empty,
  123:                                 CGP = response.QueryDictionary.ContainsKey("CGP") ? response.QueryDictionary["CGP"] : string.Empty,
  124:                                 Mgw = (from m in db.Mgws where m.Id == mgwId select m).SingleOrDefault()
  125:                             };
  126:  
  127:                             if (asbr == null)
  128:                             {
  129:                                 newAsbr.Created = newAsbr.Updated = DateTime.UtcNow.AddHours(3);
  130:  
  131:                                 db.Asbrs.Add(newAsbr);
  132:  
  133:                                 insertedItemCount++;
  134:                             }
  135:                             else
  136:                             {
  137:                                 existingItemCount = 1;
  138:  
  139:                                 if (asbr.Update(newAsbr))
  140:                                 {
  141:                                     db.Asbrs.Attach(asbr);
  142:                                     db.Entry(asbr).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  143:  
  144:                                     updatedItemCount++;
  145:                                 }
  146:                             }
  147:                         }
  148:                         else
  149:                         {
  150:                             // below: remove since reading was empty
  151:  
  152:                             if (asbr != null)
  153:                             {
  154:                                 existingItemCount = 1;
  155:  
  156:                                 asbr = (from a in db.Asbrs where a.Id == id select a).SingleOrDefault();
  157:  
  158:                                 db.Asbrs.Remove(asbr);
  159:  
  160:                                 deletedItemCount++;
  161:                             }
  162:                         }
  163:  
  164:                         db.SaveChanges();
  165:                     }
  166:                     else
  167:                     {
  168:                         result.AddWarning("Mgw is null for Asbr.Pui: " + queryImpuSipDomain);
  169:                     }
  170:                 }
  171:             }
  172:             else if (response.ReturnCode == Ia.Ftn.Cl.Model.Client.Huawei.SoftX.ResultCode.TheUserDoesNotExist)
  173:             {
  174:                 // handle a non existing number with an unknown MGW
  175:  
  176:                 using (var db = new Ia.Ftn.Cl.Model.Db())
  177:                 {
  178:                     id = Ia.Ftn.Cl.Model.Business.Huawei.Asbr.AsbrId(response.NetworkElement, queryImpuSipDomain);
  179:  
  180:                     asbr = (from a in db.Asbrs where a.Id == id select a).SingleOrDefault();
  181:  
  182:                     if (asbr != null)
  183:                     {
  184:                         existingItemCount = 1;
  185:  
  186:                         asbr = (from a in db.Asbrs where a.Id == id select a).SingleOrDefault();
  187:  
  188:                         db.Asbrs.Remove(asbr);
  189:  
  190:                         deletedItemCount++;
  191:                     }
  192:                     else
  193:                     {
  194:                         //result.AddWarning("Asbr is null for Asbr.Pui: " + queryImpuSipDomain);
  195:                     }
  196:  
  197:                     db.SaveChanges();
  198:                 }
  199:             }
  200:             else
  201:             {
  202:                 result.AddWarning("Mgw EquipmentId (Eid) does not exist for Asbr.Pui: " + queryImpuSipDomain);
  203:             }
  204:  
  205:             if (insertedItemCount != 0 || updatedItemCount != 0 || deletedItemCount != 0) isUpdated = true;
  206:             else isUpdated = false;
  207:  
  208:             result.AddSuccess("(" + readItemCount + "/" + existingItemCount + "/" + insertedItemCount + "," + updatedItemCount + "," + deletedItemCount + ")");
  209:  
  210:             return isUpdated;
  211:         }
  212:  
  213:         ////////////////////////////////////////////////////////////////////////////
  214:  
  215:         /// <summary>
  216:         ///
  217:         /// </summary>
  218:         public static List<Ia.Ftn.Cl.Model.Huawei.Asbr> List()
  219:         {
  220:             List<Ia.Ftn.Cl.Model.Huawei.Asbr> list;
  221:  
  222:             using (var db = new Ia.Ftn.Cl.Model.Db())
  223:             {
  224:                 list = (from s in db.Asbrs select s).ToList();
  225:             }
  226:  
  227:             return list;
  228:         }
  229:  
  230:         ////////////////////////////////////////////////////////////////////////////
  231:  
  232:         /// <summary>
  233:         ///
  234:         /// </summary>
  235:         public static List<string> PuiList()
  236:         {
  237:             List<string> list;
  238:  
  239:             using (var db = new Ia.Ftn.Cl.Model.Db())
  240:             {
  241:                 list = (from a in db.Asbrs select a.PUI).ToList();
  242:             }
  243:  
  244:             return list;
  245:         }
  246:  
  247:         ////////////////////////////////////////////////////////////////////////////
  248:  
  249:         /// <summary>
  250:         ///
  251:         /// </summary>
  252:         public static List<string> ServiceList()
  253:         {
  254:             List<string> list, serviceList;
  255:  
  256:             using (var db = new Ia.Ftn.Cl.Model.Db())
  257:             {
  258:                 list = (from a in db.Asbrs select a.PUI).Distinct().ToList();
  259:  
  260:                 serviceList = new List<string>(list.Count);
  261:  
  262:                 foreach (var pui in list)
  263:                 {
  264:                     serviceList.Add(Ia.Ftn.Cl.Model.Business.NumberFormatConverter.Service(pui));
  265:                 }
  266:             }
  267:  
  268:             return serviceList;
  269:         }
  270:  
  271:         ////////////////////////////////////////////////////////////////////////////
  272:  
  273:         /// <summary>
  274:         ///
  275:         /// </summary>
  276:         public static List<string> ServiceNotWithinSoftXDomainList()
  277:         {
  278:             var list = new List<string>();
  279:  
  280:             var softXDomainList = Ia.Ftn.Cl.Model.Data.Service.SoftXDomainList;
  281:  
  282:             var serviceList = Ia.Ftn.Cl.Model.Data.Huawei.Asbr.ServiceList();
  283:  
  284:             foreach (var s in serviceList)
  285:             {
  286:                 if (!softXDomainList.Any(u => s.StartsWith(u.ToString()))) list.Add(s);
  287:             }
  288:  
  289:             list.Sort();
  290:  
  291:             return list;
  292:         }
  293:  
  294:         ////////////////////////////////////////////////////////////////////////////
  295:  
  296:         /// <summary>
  297:         /// 
  298:         /// </summary>
  299:         public static List<Ia.Ftn.Cl.Model.Huawei.Asbr> List(List<string> serviceList)
  300:         {
  301:             List<Ia.Ftn.Cl.Model.Huawei.Asbr> list;
  302:  
  303:             using (var db = new Ia.Ftn.Cl.Model.Db())
  304:             {
  305:                 list = (from s in db.Asbrs
  306:                             //where serviceList.Contains(s.USRNUM)
  307:                         select s).ToList();
  308:             }
  309:  
  310:             return list;
  311:         }
  312:  
  313:         ////////////////////////////////////////////////////////////////////////////
  314:  
  315:         /// <summary>
  316:         ///
  317:         /// </summary>
  318:         public static Dictionary<string, Ia.Ftn.Cl.Model.Business.Default.SwitchRoute> PstnServiceToSwitchRouteDictionary()
  319:         {
  320:             Dictionary<string, Ia.Ftn.Cl.Model.Business.Default.SwitchRoute> dictionary;
  321:  
  322:             dictionary = new Dictionary<string, Ia.Ftn.Cl.Model.Business.Default.SwitchRoute>();
  323:  
  324:             using (var db = new Ia.Ftn.Cl.Model.Db())
  325:             {
  326:                 var list = (from s in db.Asbrs select new { s.Id /*.USRNUM, s.RNIDX2*/ }).ToList();
  327:  
  328:                 foreach (var l in list)
  329:                 {
  330:                     //dictionary[l.USRNUM] = Ia.Ftn.Cl.Model.Business.Huawei.Asbr.RnidxRouteToSwitchRoute(l.RNIDX2);
  331:                 }
  332:             }
  333:  
  334:             return dictionary;
  335:         }
  336:  
  337:         ////////////////////////////////////////////////////////////////////////////
  338:  
  339:         /// <summary>
  340:         ///
  341:         /// </summary>
  342:         public static List<Ia.Ftn.Cl.Model.Business.ServiceAccessIpOntCreated> ServiceOntWithinAllowedToBeProvisionedOrMigratedHuaweiSwitchNokiaAccessOltList()
  343:         {
  344:             int serviceType;
  345:             string service, serviceId;
  346:             List<int> oltIdList;
  347:             List<Ia.Ftn.Cl.Model.Business.ServiceAccessIpOntCreated> tempList, serviceOntList;
  348:  
  349:             serviceType = Ia.Ftn.Cl.Model.Business.Service.ServiceType.ImsService;
  350:  
  351:             //oltIdList = Ia.Ftn.Cl.Model.Data.Service.AllowedToBeProvisionedOltIdList.Intersect(Ia.Ftn.Cl.Model.Data.NetworkDesignDocument.HuaweiSwitchNokiaAccessOltIdList).ToList();
  352:             oltIdList = Ia.Ftn.Cl.Model.Data.NetworkDesignDocument.HuaweiRouterNokiaAccessOltIdList;
  353:  
  354:             var ontIpToOntForOltIdListDictionary = Ia.Ftn.Cl.Model.Data.NetworkDesignDocument.OntIpToOntForOltIdListDictionary(oltIdList);
  355:  
  356:             using (var db = new Ia.Ftn.Cl.Model.Db())
  357:             {
  358:                 tempList = (from a in db.Asbrs
  359:                             join m in db.Mgws on a.Mgw.Id equals m.Id
  360:                             //where o.EmsOnt.Access != null && oltIdList.Contains(o.EmsOnt.Access.Olt) may use a special like ontIpRangeList?
  361:                             select new Ia.Ftn.Cl.Model.Business.ServiceAccessIpOntCreated { Service = a.PUI, Ip = a.Mgw.RA1, CreatedDateTime = a.Created }).AsNoTracking().ToList();
  362:             }
  363:  
  364:             if (tempList != null && tempList.Count > 0)
  365:             {
  366:                 serviceOntList = new List<Ia.Ftn.Cl.Model.Business.ServiceAccessIpOntCreated>(tempList.Count);
  367:  
  368:                 foreach (var so in tempList)
  369:                 {
  370:                     service = Ia.Ftn.Cl.Model.Business.NumberFormatConverter.Service(so.Service); // so.Service here is o.PUI
  371:  
  372:                     serviceId = Ia.Ftn.Cl.Model.Business.Service.ServiceToServiceId(service, serviceType);
  373:  
  374:                     var nddOnt = ontIpToOntForOltIdListDictionary.ContainsKey(so.Ip) ? ontIpToOntForOltIdListDictionary[so.Ip] : null;
  375:  
  376:                     if (nddOnt != null)
  377:                     {
  378:                         serviceOntList.Add(new Ia.Ftn.Cl.Model.Business.ServiceAccessIpOntCreated
  379:                         {
  380:                             ServiceId = serviceId,
  381:                             Service = service,
  382:                             Ont = nddOnt,
  383:                             AccessId = nddOnt.Access.Id,
  384:                             CreatedDateTime = so.CreatedDateTime
  385:                         });
  386:                     }
  387:                 }
  388:             }
  389:             else
  390:             {
  391:                 serviceOntList = new List<Ia.Ftn.Cl.Model.Business.ServiceAccessIpOntCreated>();
  392:             }
  393:  
  394:             return serviceOntList;
  395:         }
  396:  
  397:         ////////////////////////////////////////////////////////////////////////////
  398:  
  399:         /// <summary>
  400:         ///
  401:         /// </summary>
  402:         public static int NextVacantTidForOnt(Ia.Ftn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, Ia.Ftn.Cl.Model.Ont ont)
  403:         {
  404:             int tid;
  405:             List<int> list;
  406:  
  407:             var eid = Ia.Ftn.Cl.Model.Business.Huawei.SoftX.IpToEid(nddOnt.Ip);
  408:  
  409:             list = UsedTidListForEid(eid);
  410:  
  411:             if (list.Count == 0) tid = 1; // this means the box is empty, and we should create at 1
  412:             else
  413:             {
  414:                 list = Ia.Cl.Models.Default.ExcludedNumberListFromNumberListWithinRange(list, Ia.Ftn.Cl.Model.Business.Nokia.Ont.PossibleNumberOfTdForOntFamilyType((Ia.Ftn.Cl.Model.Business.Nokia.Ont.FamilyType)ont.FamilyTypeId));
  415:  
  416:                 if (list.Count > 0) tid = list[0];
  417:                 else tid = Ia.Ftn.Cl.Model.Business.Default.PortUndefinedOrInvalidOrUnknown; // something went wrong
  418:             }
  419:  
  420:             return tid;
  421:         }
  422:  
  423:         ////////////////////////////////////////////////////////////////////////////
  424:  
  425:         /// <summary>
  426:         ///
  427:         /// </summary>
  428:         private static List<int> UsedTidListForEid(string eid)
  429:         {
  430:             List<int> list;
  431:  
  432:             using (var db = new Ia.Ftn.Cl.Model.Db())
  433:             {
  434:                 var tidList = (from asb in db.Asbrs where asb.EID == eid orderby asb.TID ascending select asb.TID).ToList<string>();
  435:  
  436:                 list = tidList.Select(int.Parse).ToList();
  437:             }
  438:  
  439:             return list;
  440:         }
  441:  
  442:         ////////////////////////////////////////////////////////////////////////////
  443:         ////////////////////////////////////////////////////////////////////////////
  444:  
  445:         /// <summary>
  446:         ///
  447:         /// </summary>
  448:         public static string ToSimpleTextString(Ia.Ftn.Cl.Model.Huawei.Asbr asbr)
  449:         {
  450:             StringBuilder sb;
  451:  
  452:             sb = new StringBuilder();
  453:  
  454:             sb.AppendLine("PUI: " + asbr.PUI);
  455:             sb.AppendLine("PRI: " + asbr.PRI);
  456:             sb.AppendLine("RGN: " + asbr.RGN);
  457:             sb.AppendLine("MN: " + asbr.MN);
  458:             sb.AppendLine("MGWID: " + asbr.MGWID);
  459:             sb.AppendLine("TEN: " + asbr.TEN);
  460:             sb.AppendLine("EDESC: " + asbr.EDESC);
  461:             sb.AppendLine("EID: " + asbr.EID);
  462:             sb.AppendLine("TID: " + asbr.TID);
  463:             //sb.AppendLine("ENDTID: " + asbr.ENDTID);
  464:             sb.AppendLine("V5IID: " + asbr.V5IID);
  465:             sb.AppendLine("LKS: " + asbr.LKS);
  466:             sb.AppendLine("IID: " + asbr.IID);
  467:             sb.AppendLine("SGIAD: " + asbr.SGIAD);
  468:             sb.AppendLine("TRUNKGP: " + asbr.TRUNKGP);
  469:             sb.AppendLine("L3ADDR: " + asbr.L3ADDR);
  470:             //sb.AppendLine("EL3ADDR: " + asbr.EL3ADDR);
  471:             //sb.AppendLine("STARTR: " + asbr.STARTR);
  472:             //sb.AppendLine("MRR: " + asbr.MRR);
  473:  
  474:             return sb.ToString();
  475:         }
  476:  
  477:         ////////////////////////////////////////////////////////////////////////////
  478:         ////////////////////////////////////////////////////////////////////////////
  479:     }
  480:  
  481:     ////////////////////////////////////////////////////////////////////////////
  482:     ////////////////////////////////////////////////////////////////////////////
  483: }