📄 diameter_nasreq_aaans_parser.cxx
字号:
/* BEGIN_COPYRIGHT *//* *//* Open Diameter: Open-source software for the Diameter and *//* Diameter related protocols *//* *//* Copyright (C) 2002-2004 Open Diameter Project *//* *//* This library is free software; you can redistribute it and/or modify *//* it under the terms of the GNU Lesser General Public License as *//* published by the Free Software Foundation; either version 2.1 of the *//* License, or (at your option) any later version. *//* *//* This library is distributed in the hope that it will be useful, *//* but WITHOUT ANY WARRANTY; without even the implied warranty of *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *//* Lesser General Public License for more details. *//* *//* You should have received a copy of the GNU Lesser General Public *//* License along with this library; if not, write to the Free Software *//* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *//* USA. *//* *//* In addition, when you copy and redistribute some or the entire part of *//* the source code of this software with or without modification, you *//* MUST include this copyright notice in each copy. *//* *//* If you make any changes that are appeared to be useful, please send *//* sources that include the changed part to *//* diameter-developers@lists.sourceforge.net so that we can reflect your *//* changes to one unified version of this software. *//* *//* END_COPYRIGHT *//* $Id: diameter_nasreq_aaans_parser.cxx,v 1.7 2006/03/16 17:01:47 vfajardo Exp $ *//* diameter_nasreq_aaans_parser.cxx Diameter AA Answer Parser Written by Yoshihiro Ohba Created May 1, 2004.*/#include "diameter_nasreq_parser.hxx"template<> void AA_AnswerParser::parseAppToRaw(){ AA_AnswerData &data = *getAppData(); AAAMessage &aaaMessage = *getRawData(); AAADictionaryManager dm; AAAAvpContainerManager cm; AAAAvpContainer *c; AAACommandCode code; AAAApplicationId appId; // Obtain Command Code and Application Identifier. if (!dm.getCommandCode("AA-Answer", &code, &appId)) { AAA_LOG(LM_ERROR, "Cannot find Diameter message in dictionary\n."); throw (DictionaryError); return; } // Specify the header. hdr_flag flag = {0,0,0}; // Answer aaaMessage.hdr = AAADiameterHeader(1, 0, flag, code, appId, 0, 0); if (data.AuthApplicationId.IsSet()) { c = cm.acquire("Auth-Application-Id"); data.AuthApplicationId.CopyTo(*c, AAA_AVP_INTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.AuthRequestType.IsSet()) { c = cm.acquire("Auth-Request-Type"); data.AuthRequestType.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.ResultCode.IsSet()) { c = cm.acquire("Result-Code"); data.ResultCode.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.UserName.IsSet()) { c = cm.acquire("User-Name"); data.UserName.CopyTo(*c, AAA_AVP_UTF8_STRING_TYPE); aaaMessage.acl.add(c); } if (data.ServiceType.IsSet()) { c = cm.acquire("Service-Type"); data.ServiceType.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.Class.IsSet()) { c = cm.acquire("Class"); data.Class.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.ConfigurationToken.IsSet()) { c = cm.acquire("Configuration-Token"); data.ConfigurationToken.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.AcctInterimInterval.IsSet()) { c = cm.acquire("Acct-Interim-Interval"); data.AcctInterimInterval.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.ErrorMessage.IsSet()) { c = cm.acquire("Error-Message"); data.ErrorMessage.CopyTo(*c, AAA_AVP_UTF8_STRING_TYPE); aaaMessage.acl.add(c); } if (data.ErrorReportingHost.IsSet()) { c = cm.acquire("Error-Reporting-Host"); data.ErrorReportingHost.CopyTo(*c, AAA_AVP_DIAMID_TYPE); aaaMessage.acl.add(c); } if (data.IdleTimeout.IsSet()) { c = cm.acquire("Idle-Timeout"); data.IdleTimeout.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.AuthorizationLifetime.IsSet()) { c = cm.acquire("Authorization-Lifetime"); data.AuthorizationLifetime.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.AuthGracePeriod.IsSet()) { c = cm.acquire("Auth-Grace-Period"); data.AuthGracePeriod.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.AuthSessionState.IsSet()) { c = cm.acquire("Auth-Session-State"); data.AuthSessionState.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.ReAuthRequestType.IsSet()) { c = cm.acquire("Re-Auth-Request-Type"); data.ReAuthRequestType.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.SessionTimeout.IsSet()) { c = cm.acquire("Session-Timeout"); data.SessionTimeout.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.State.IsSet()) { c = cm.acquire("State"); data.State.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.ReplyMessage.IsSet()) { c = cm.acquire("Reply-Message"); data.ReplyMessage.CopyTo(*c, AAA_AVP_UTF8_STRING_TYPE); aaaMessage.acl.add(c); } if (data.OriginStateId.IsSet()) { c = cm.acquire("Origin-State-Id"); data.OriginStateId.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.FilterId.IsSet()) { c = cm.acquire("Filter-Id"); data.FilterId.CopyTo(*c, AAA_AVP_UTF8_STRING_TYPE); aaaMessage.acl.add(c); } if (data.PortLimit.IsSet()) { c = cm.acquire("Port-Limit"); data.PortLimit.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.Prompt.IsSet()) { c = cm.acquire("Prompt"); data.Prompt.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.ArapChallengeResponse.IsSet()) { c = cm.acquire("ARAP-Challenge-Response"); data.ArapChallengeResponse.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.ArapFeatures.IsSet()) { c = cm.acquire("ARAP-Features"); data.ArapFeatures.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.ArapSecurity.IsSet()) { c = cm.acquire("ARAP-Security"); data.ArapSecurity.CopyTo(*c, AAA_AVP_INTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.ArapSecurityData.IsSet()) { c = cm.acquire("ARAP-Security-Data"); data.ArapSecurityData.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.ArapZoneAccess.IsSet()) { c = cm.acquire("ARAP-Zone-Access"); data.ArapZoneAccess.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.CallbackId.IsSet()) { c = cm.acquire("Callback-Id"); data.CallbackId.CopyTo(*c, AAA_AVP_UTF8_STRING_TYPE); aaaMessage.acl.add(c); } if (data.CallbackNumber.IsSet()) { c = cm.acquire("Callback-Number"); data.CallbackNumber.CopyTo(*c, AAA_AVP_UTF8_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedAppletalkLink.IsSet()) { c = cm.acquire("Framed-Appletalk-Link"); data.FramedAppletalkLink.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.FramedAppletalkNetwork.IsSet()) { c = cm.acquire("Framed-Appletalk-Network"); data.FramedAppletalkNetwork.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.FramedAppletalkZone.IsSet()) { c = cm.acquire("Framed-Appletalk-Zone"); data.FramedAppletalkZone.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedCompression.IsSet()) { c = cm.acquire("Framed-Compression"); data.FramedCompression.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.FramedInterfaceId.IsSet()) { c = cm.acquire("Framed-Interface-Id"); data.FramedInterfaceId.CopyTo(*c, AAA_AVP_UINTEGER64_TYPE); aaaMessage.acl.add(c); } if (data.FramedIpAddress.IsSet()) { c = cm.acquire("Framed-IP-Address"); data.FramedIpAddress.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedIpv6Prefix.IsSet()) { c = cm.acquire("Framed-IPv6-Prefix"); data.FramedIpv6Prefix.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedIpv6Pool.IsSet()) { c = cm.acquire("Framed-IPv6-Pool"); data.FramedIpv6Pool.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedIpv6Route.IsSet()) { c = cm.acquire("Framed-IPv6-Route"); data.FramedIpv6Route.CopyTo(*c, AAA_AVP_UTF8_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedIpNetmask.IsSet()) { c = cm.acquire("Framed-IP-Netmask"); data.FramedIpNetmask.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedRoute.IsSet()) { c = cm.acquire("Framed-Route"); data.FramedRoute.CopyTo(*c, AAA_AVP_UTF8_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedPool.IsSet()) { c = cm.acquire("Framed-Pool"); data.FramedPool.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedIpxNetwork.IsSet()) { c = cm.acquire("Framed-IPX-Network"); data.FramedIpxNetwork.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c); } if (data.FramedMtu.IsSet()) { c = cm.acquire("Framed-MTU"); data.FramedMtu.CopyTo(*c, AAA_AVP_UINTEGER32_TYPE); aaaMessage.acl.add(c); } if (data.FramedProtocol.IsSet()) { c = cm.acquire("Framed-Protocol"); data.FramedProtocol.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.FramedRouting.IsSet()) { c = cm.acquire("Framed-Routing"); data.FramedRouting.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.RedirectHost.IsSet()) { c = cm.acquire("Redirect-Host"); data.RedirectHost.CopyTo(*c, AAA_AVP_DIAMID_TYPE); aaaMessage.acl.add(c); } if (data.RedirectHostUsage.IsSet()) { c = cm.acquire("Redirect-Host-Usage"); data.RedirectHostUsage.CopyTo(*c, AAA_AVP_ENUM_TYPE); aaaMessage.acl.add(c); } if (data.LoginIpHost.IsSet()) { c = cm.acquire("Login-IP-Host"); data.LoginIpHost.CopyTo(*c, AAA_AVP_STRING_TYPE); aaaMessage.acl.add(c);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -