Erlang 21

diameter




erlang

diameter

मॉड्यूल

व्यास

मॉड्यूल सारांश

व्यास अनुप्रयोग का मुख्य एपीआई।

विवरण

यह मॉड्यूल उस इंटरफ़ेस को प्रदान करता है जिसके साथ एक उपयोगकर्ता व्यास व्यास को लागू कर सकता है जो आरएफसी 6733 में परिभाषित व्यास प्रोटोकॉल का उपयोग करके संदेश भेजता है और प्राप्त करता है।

मूल उपयोग में स्थानीय स्तर पर लागू व्यास नोड का प्रतिनिधित्व और start_service/2 साथ इसकी क्षमताओं को शामिल करना, start_service/2 का उपयोग करके परिवहन क्षमता जोड़ना और व्यास अनुरोध भेजना और call/4 साथ व्यास के उत्तर प्राप्त करना शामिल है। इनकमिंग diameter_app(3) अनुरोधों को सेवा कॉन्फ़िगरेशन में निर्दिष्ट व्यास_एप्प diameter_app(3) कॉलबैक मॉड्यूल के लिए कॉलबैक के रूप में सूचित किया जाता है।

व्यास (पूंजीकृत नहीं) और व्यास (पूंजीकृत) के बीच अंतर से सावधान रहें। पूर्व में एरलैंग नाम के व्यास के अनुप्रयोग का उल्लेख है जिसका मुख्य एपीआई यहां परिभाषित किया गया है, जो आरएमआई 6733 के अर्थ में डायमीटर प्रोटोकॉल के लिए है।

इस मॉड्यूल में अधिकांश फ़ंक्शन को कॉल करने से पहले व्यास एप्लिकेशन को शुरू किया जाना चाहिए।

जानकारी का प्रकार

Address()
DiameterIdentity()
Grouped()
OctetString()
Time()
Unsigned32()
UTF8String()

RFC 6733 AVP डेटा प्रारूप के अनुरूप। व्यास_निश्चय में परिभाषित diameter_dict(4)

application_alias() = term()

सेवा कॉन्फ़िगरेशन में व्यास अनुप्रयोग की पहचान करने वाला नाम। आवेदन द्वारा परिभाषित अनुरोध भेजते समय call/4 किया गया।

application_module() = Mod | [Mod | ExtraArgs] | #diameter_callback{}
Mod = atom()
ExtraArgs = list()

मॉड्यूल उन सभी प्रलेखों के साथ जोड़े जाने के लिए किसी भी अतिरिक्त तर्क के साथ, diameter_app(3) में परिभाषित कॉलबैक इंटरफ़ेस को लागू करता है। ध्यान दें कि एक आउटगोइंग अनुरोध के लिए विशिष्ट अतिरिक्त तर्क call/4 लिए निर्दिष्ट किए जा सकते हैं, जिस स्थिति में उन्हें किसी भी मॉड्यूल-विशिष्ट अतिरिक्त तर्क से जोड़ा जाता है।

#diameter_callback{} रिकॉर्ड निर्दिष्ट करने से व्यक्तिगत कार्य सामान्य #diameter_callback{} diameter_app(3) स्थान पर कॉन्फ़िगर किए जा सकते हैं। जानकारी के लिए देखें diameter_callback.erl

application_opt()

एक व्यास आवेदन को परिभाषित करने वाले विकल्प। निम्न में से एक प्रकार है।

{alias, application_alias() }

सेवा के दायरे में आवेदन के लिए विशिष्ट पहचानकर्ता। dictionary विकल्प के मूल्य में चूक।

{dictionary, atom()}

अनुप्रयोग द्वारा परिभाषित डायमीटर संदेशों के लिए एक एनकोड / डीकोड मॉड्यूल का नाम। ये मॉड्यूल उन फ़ाइलों से उत्पन्न होते हैं जिनका प्रारूप diameter_dict(4) में दर्ज़ किया गया है।

{module, application_module() }

कॉलबैक मॉड्यूल जिसमें डायमीटर एप्लिकेशन के संदेश संभाले जाते हैं। आवश्यक इंटरफ़ेस और शब्दार्थ के लिए diameter_app(3) देखें।

{state, term()}

प्रारंभिक कॉलबैक स्थिति। प्रचलित राज्य को कुछ diameter_app(3) कॉलबैक में पारित किया जाता है, जो फिर एक नया राज्य लौटा सकता है। alias विकल्प के मूल्य के लिए चूक।

{call_mutates_state, true|false}

pick_peer/4 एप्लिकेशन कॉलबैक एप्लिकेशन स्थिति को संशोधित कर सकता है या नहीं। false अवहेलना।

चेतावनी

इस विकल्प के true होने पर pick_peer/4 कॉलबैक को क्रमबद्ध किया जाता true , जो एक संभावित प्रदर्शन अड़चन है। एक साधारण डायमीटर क्लाइंट को उत्परिवर्तनीय स्थिति का उपयोग करने से कोई दुष्प्रभाव नहीं हो सकता है, लेकिन एक सर्वर या एजेंट जो आने वाले अनुरोध का जवाब देता है, उसे शायद इससे बचना चाहिए।

{answer_errors, callback|report|discard}

मैनर जिसमें आने वाले उत्तर संदेशों में डिकोड त्रुटियां होती हैं।

यदि callback तो त्रुटियों को उसी तरीके से handle_answer/4 कॉलबैक के रूप में handle_answer/4 किया जाता है, handle_answer/4 कि handle_answer/4 कॉलबैक में पास किए गए #diameter_packet{} के errors क्षेत्र में संचारित त्रुटियों के साथ। यदि report तो कॉलबैक के बिना त्रुटियों वाले उत्तर को छोड़ दिया जाता है और लॉग को एक चेतावनी रिपोर्ट लिखी जाती है। यदि discard तो त्रुटियों वाले उत्तर को बिना कॉलबैक के चुपचाप त्याग दिया जाता है। दोनों report और call/4 इनवोकेशन के लिए रिटर्न वैल्यू के मामलों को discard तो ऐसा लगता है जैसे कॉलबैक हुआ और {error, failure} वापस आ गया।

अस्वीकार करने के लिए चूक।

{request_errors, answer_3xxx|answer|callback}

3007 (DIAMETER_APPLICATION_UNSUPPORTED, जो किसी एप्लिकेशन कॉलबैक मॉड्यूल के साथ संबद्ध नहीं किया जा सकता है) के अलावा किसी त्रुटि के आने पर, आने वाले अनुरोधों को नियंत्रित किया जाता है।

यदि answer_3xxx तब अनुरोधों का उत्तर बिना किसी handle_request/3 कॉलबैक के लिया जाता है। यदि answer तो भी 5xxx त्रुटियों को कॉलबैक के बिना उत्तर दिया जाता है जब तक कि प्रश्न में कनेक्शन ने नीचे लिखे अनुसार RFC 3588 सामान्य शब्दकोश को कॉन्फ़िगर नहीं किया है। यदि callback तो एक handle_request/3 कॉलबैक हमेशा होता है और इसका रिटर्न मान पीयर को भेजे गए उत्तर को निर्धारित करता है, यदि कोई हो।

answer_3xxx लिए डिफ़ॉल्ट।

ध्यान दें

व्यास द्वारा भेजे गए उत्तर व्यास व्यास में ई-बिट सेट करते हैं। चूँकि RFC 3588 एक answer-message में केवल 3xxx परिणाम कोड की अनुमति देता है, answer में answer_3xxx के समान शब्दार्थ होता है, जब प्रश्न में परिवहन को इसके सामान्य शब्दकोश के रूप में answer_3xxx साथ कॉन्फ़िगर किया गया है। चूंकि RFC 6733 एक answer-message में 3xxx और 5xxx परिणाम कोड दोनों की अनुमति देता है, इसलिए इसका सामान्य डिक्शनरी answer_3xxx साथ परिवहन answer_3xxx और answer बीच अंतर करता है।

call_opt()

आउटगोइंग डायमीटर अनुरोध भेजते समय call/4 विकल्प उपलब्ध हैं। निम्न में से एक प्रकार है।

{extra, list()}

कॉलबैक मॉड्यूल को कॉलबैक मॉड्यूल में जोड़ने के लिए अतिरिक्त तर्क। इन्हें कॉलबैक पर कॉन्फ़िगर किए गए किसी भी अतिरिक्त तर्क से जोड़ा जाता है। एकाधिक विकल्प तर्क सूची में संलग्न हैं।

{filter, peer_filter() }

प्रश्न में आवेदन के लिए pick_peer/4 कॉलबैक को पास करने से पहले उपलब्ध साथियों की सूची पर लागू करने के लिए फ़िल्टर करें। एकाधिक विकल्प फिल्टर की इसी सूची पर एक एकल all फिल्टर के बराबर हैं। none करने के लिए चूक।

{peer, diameter_app:peer_ref() }

पीयर जिस पर प्रश्न में अनुरोध भेजा जा सकता है, जिसमें विचाराधीन व्यास आवेदन के लिए विज्ञापित समर्थन वाले साथियों के चयन को पूर्वनिर्धारित किया जाए। एकाधिक विकल्पों को निर्दिष्ट किया जा सकता है, और उनके आदेश का सम्मान उम्मीदवार को बाद की pick_peer/4 कॉलबैक में दी गई सूचियों में किया जाता है।

{timeout, diameter_dict(4) }

मिलीसेकंड की संख्या जिसके बाद अनुरोध को टाइमआउट होना चाहिए। 5000 की कमी।

detach

कॉउंस call/4 ok लौटने के लिए जैसे ही प्रश्न में अनुरोध को एनकोड किया गया है, इसके बजाय प्रतीक्षा करने और परिणाम को बाद के handle_answer/4 या handle_error/4 कॉलबैक से वापस करना है।

अमान्य विकल्प call/4 को विफल कर देगा।

capability()

एवीपी मूल्य क्षमताओं के आदान-प्रदान के दौरान आउटगोइंग सीईआर या सीईए संदेशों में भेजे गए हैं। एक सेवा और परिवहन दोनों पर कॉन्फ़िगर किया जा सकता है, बाद वाले पूर्वता पर मूल्य। निम्न में से एक प्रकार है।

{'Origin-Host', diameter_dict(4) }
{'Origin-Realm', diameter_dict(4) }
{'Host-IP-Address', [ diameter_dict(4) ]}

एक पता सूची एक transport module के प्रारंभ समारोह के लिए उपलब्ध है, जो बाद के सीईआर या सीईए में उपयोग के लिए एक नई सूची वापस कर सकती है। होस्ट-आईपी-पता निर्दिष्ट नहीं किया जाना चाहिए, यदि प्रश्न में ट्रांसपोर्ट मॉड्यूल diameter_transport(3) में वर्णित पते की सूची का संचार करता है

{'Vendor-Id', diameter_dict(4) }
{'Product-Name', diameter_dict(4) }
{'Origin-State-Id', diameter_dict(4) }

उत्पत्ति-राज्य-आईडी वैकल्पिक है, लेकिन यदि कॉन्फ़िगर किया गया है, तो आउटगोइंग CER / CEA और DWR / DWA संदेशों में शामिल किया जाएगा। 0 (शून्य) का मान सेट करना एक मान सेट नहीं करने के बराबर है, जैसा कि RFC 6733 में दर्ज़ किया गया है। फ़ंक्शन origin_state_id/0 का उपयोग उस मूल्य को पुनः प्राप्त करने के लिए किया जा सकता है जो कि व्यास के अनुप्रयोग शुरू होने पर गणना की जाती है।

{'Supported-Vendor-Id', [ diameter_dict(4) ]}
{'Auth-Application-Id', [ diameter_dict(4) ]}
{'Inband-Security-Id', [ diameter_dict(4) ]}

इनबाउंड-सिक्योरिटी-आईडी खाली सूची में चूक करता है, जो केवल 0 (NO_INBAND_SECURITY) वाली सूची के बराबर है। यदि 1 (TLS) निर्दिष्ट किया गया है, तो TLS का चयन किया जाता है यदि सहकर्मी से प्राप्त CER / CEA इसे प्रदान करता है।

{'Acct-Application-Id', [ diameter_dict(4) ]}
{'Vendor-Specific-Application-Id', [ diameter_dict(4) ]}
{'Firmware-Revision', diameter_dict(4) }

ध्यान दें कि प्रत्येक टपल एक या एक से अधिक एवीपी मूल्यों का संचार करता है। डुप्लिकेट ट्यूपल्स निर्दिष्ट करना एक त्रुटि है।

eval() = {M,F,A} | fun() | [eval() | A]

एक अभिव्यक्ति जिसका मूल्यांकन निम्नलिखित अर्थों में एक फ़ंक्शन के रूप में किया जा सकता है।

eval([{M,F,A} | T]) ->
    apply(M, F, T ++ A);
eval([[F|A] | T]) ->
    eval([F | T ++ A]);
eval([F|A]) ->
    apply(F, A);
eval(F) ->
    eval([F]).

एक eval() E को एक तर्क सूची A में लागू करने का अर्थ है eval([E|A]) के अर्थ में।

चेतावनी

फॉर्म fun Name/Arity की मजेदार अभिव्यक्तियों का उपयोग करने से सावधान रहें उन स्थितियों में जिनमें मज़ा अल्पकालिक नहीं है और कोड को रनटाइम पर अपग्रेड किया जाना है क्योंकि किसी भी प्रक्रिया को ऐसे मज़ेदार बनाए रखने के लिए पुराने कोड का संदर्भ होगा। विशेष रूप से, ऐसा मान आमतौर पर start_service/2 या add_transport/2 में दिए गए कॉन्फ़िगरेशन में अनुचित है।

peer_filter() = term()

एक pick_peer/4 कॉलबैक के लिए उम्मीदवार साथियों का चयन करने के लिए call/4 को फ़िल्टर किया गया। निम्न में से एक प्रकार है।

none

किसी भी सहकर्मी से मेल खाता है। यह एक सुविधा है जो फ़िल्टर को बिना फ़िल्टर के बराबर प्रदान करती है।

host

केवल उन्हीं साथियों से मेल खाता है, जिनके ओरिजिन-होस्ट का सवाल में आउटगोइंग रिक्वेस्ट में डेस्टिनेशन-होस्ट के समान मूल्य है, या किसी सहकर्मी के पास यदि अनुरोध में डेस्टिनेशन-होस्ट एवीपी नहीं है।

realm

केवल उन्हीं साथियों से मेल खाता है, जिनके ओरिजिनल-दायरे का प्रश्न में आउटगोइंग रिक्वेस्ट में डेस्टिनेशन-रियलम के समान मूल्य है, या किसी भी सहकर्मी के पास यदि अनुरोध में डेस्टिनेशन-दायरे एवीपी नहीं है।

{host, any| diameter_dict(4) }

केवल उन्हीं साथियों से मेल खाता है जिनके मूल-मेजबान में निर्दिष्ट मूल्य है, या यदि any परमाणु है तो सभी सहकर्मी हैं।

{realm, any| diameter_dict(4) }

केवल उन साथियों से मेल खाता है जिनके मूल-दायरे का निर्दिष्ट मान है, या यदि any परमाणु है तो सभी साथी।

{eval, eval() }

केवल उन साथियों से मेल खाता है जिनके लिए कनेक्शन के diameter_caps रिकॉर्ड पर लागू होने पर निर्दिष्ट eval() true हो जाता है। किसी भी अन्य वापसी मूल्य या अपवाद false बराबर है।

{neg, peer_filter() }

केवल उन्हीं साथियों से मेल खाता है जो निर्दिष्ट फ़िल्टर से मेल नहीं खाते हैं।

{all, [ peer_filter() ]}

निर्दिष्ट सूची में प्रत्येक फ़िल्टर द्वारा मिलान किए गए केवल उन साथियों से मेल खाता है।

{any, [ peer_filter() ]}

निर्दिष्ट सूची में कम से कम एक फ़िल्टर द्वारा मिलान किए गए केवल उन साथियों से मेल खाता है। परिणामी सूची मैच के क्रम में होगी, दूसरे के द्वारा मिलान किए जाने से पहले छंटनी सूची के पहले फिल्टर से मेल खाने वाले साथियों, और इसी तरह।

{first, [ peer_filter() ]}

any तरह, लेकिन पहले फ़िल्टर पर रुक जाता है जिसके लिए मैच होते हैं, जो कई साथियों के होने पर अधिक कुशल हो सकता है। उदाहरण के लिए, निम्न फ़िल्टर केवल सहकर्मियों को प्रस्तुत करता है जो मेजबान और क्षेत्र फिल्टर दोनों के लिए सबसे अच्छा मेल खाता है।

{first, [{all, [host, realm]}, realm]}

एक अमान्य फ़िल्टर {any,[]} बराबर है, एक फ़िल्टर जो किसी सहकर्मी से मेल नहीं खाता है।

ध्यान दें

host और realm फ़िल्टर गंतव्य-होस्ट और गंतव्य-दायरे AVP को निवर्तमान अनुरोध से निकाले जाने का कारण बनाते हैं, इसे रिकॉर्ड- या सूची-मूल्यवान diameter_codec:message() , और प्रत्येक AVP में से सबसे अधिक माना जाता है। यदि यह स्थिति नहीं है तो वांछित परिणाम प्राप्त करने के लिए {host|realm, diameter_dict(4) } फिल्टर का उपयोग किया जाना चाहिए। एक खाली diameter_dict(4) (जो विशिष्ट नहीं होना चाहिए) फ़िल्टरिंग के प्रयोजनों के लिए सभी होस्ट / स्थानों से मेल खाता है।

चेतावनी

गंतव्य-होस्ट सेट करते समय एक host फ़िल्टर आमतौर पर वांछनीय नहीं होता है क्योंकि यह उम्मीदवारों की सूची से सहकर्मी एजेंटों को हटा देगा।

service_event() = #diameter_event{service = service_name() , info = service_event_info() }

subscribe/1 का उपयोग करते हुए इन प्रक्रियाओं को भेजे गए ईवेंट संदेश।

service_event_info() = term()

एक service_event() रिकॉर्ड की info फ़ील्ड। निम्न में से एक प्रकार हो सकता है।

start
stop

सेवा शुरू या बंद की जा रही है। कोई ईवेंट start होने से पहले नहीं होता है। कोई भी घटना एक stop इवेंट का अनुसरण नहीं करती है, और यह घटना सभी परिवहन प्रक्रियाओं की समाप्ति का अर्थ है।

{up, Ref, Peer, Config, Pkt}
{up, Ref, Peer, Config}
{down, Ref, Peer, Config}
Ref    = transport_ref()
Peer   = diameter_app:peer()
Config = {connect|listen, [transport_opt()]}
Pkt    = #diameter_packet{}

RFC 3539 वॉचडॉग मशीन ने OKAY स्थिति में ( up ) या ( down ) से संक्रमण किया है। अगर एक #diameter_packet{} एक up इवेंट में मौजूद है तो एक नए स्थापित ट्रांसपोर्ट कनेक्शन पर एक क्षमताओं का आदान-प्रदान हुआ है और रिकॉर्ड में CER या CEA प्राप्त होता है।

ध्यान दें कि किसी दिए गए सहकर्मी के लिए एक एकल up या down घटना कई peer_up/3 या peer_down/3 कॉलबैक से मेल खाती है, प्रत्येक के लिए एक Diameter एप्लिकेशन के लिए क्षमताओं के आदान-प्रदान के दौरान बातचीत की जाती है। अर्थात्, ईवेंट संपूर्ण रूप से सहकर्मी के साथ कनेक्टिविटी का संचार करता है जबकि कॉलबैक व्यक्तिगत डायमीटर अनुप्रयोगों के संबंध में कनेक्टिविटी का संचार करता है।

{reconnect, Ref, Opts}
Ref  = transport_ref()
Opts = [transport_opt()]

एक कनेक्टिंग ट्रांसपोर्ट connect_timer या watchdog_timer समाप्ति के बाद एक सहकर्मी के साथ एक ट्रांसपोर्ट कनेक्शन को स्थापित / पुन: स्थापित करने का प्रयास कर रहा है।

{closed, Ref, Reason, Config}
Ref = transport_ref()
Config = {connect|listen, [transport_opt()]}

क्षमताओं का आदान-प्रदान विफल हो गया है। Reason निम्न प्रकार से हो सकते हैं।

{'CER', Result, Caps, Pkt}
Result = ResultCode | {capabilities_cb, CB, ResultCode|discard}
Caps = #diameter_caps{}
Pkt  = #diameter_packet{}
ResultCode = integer()
CB = eval()

एक आने वाले सीईआर को संकेतित परिणाम कोड के साथ उत्तर दिया गया है, या त्याग दिया गया है। Caps में क्रमशः स्थानीय नोड और दूरस्थ सहकर्मी के लिए मानों के जोड़े होते हैं। Pkt में CER विचाराधीन है। क्षमताओं कॉलबैक द्वारा अस्वीकृति के मामले में, ट्यूपल में अस्वीकार कॉलबैक होता है।

{'CER', Caps, {ResultCode, Pkt}}
ResultCode = integer()
Caps = #diameter_caps{}
Pkt  = #diameter_packet{}

एक आने वाले सीईआर में त्रुटियां थीं और इसका संकेत परिणाम कोड के साथ दिया गया है। Caps में केवल स्थानीय नोड के लिए मान होते हैं। Pkt में CER विचाराधीन है।

{'CER', timeout}

कनेक्शन स्थापना के capx_timeout के भीतर एक अपेक्षित CER प्राप्त नहीं हुआ था।

{'CEA', Result, Caps, Pkt}
Result = ResultCode | atom() | {capabilities_cb, CB, ResultCode|discard}
Caps = #diameter_caps{}
Pkt  = #diameter_packet{}
ResultCode = integer()

संकेतित कारण के लिए एक आने वाली सीईए को खारिज कर दिया गया है। पूर्णांक-मूल्यवान Result सहकर्मी द्वारा भेजे गए परिणाम कोड को इंगित करता है। Caps में स्थानीय नोड और दूरस्थ सहकर्मी के लिए मूल्य जोड़े हैं। Pkt में प्रश्न में CEA होता है। क्षमताओं कॉलबैक द्वारा अस्वीकृति के मामले में, ट्यूपल में अस्वीकार कॉलबैक होता है।

{'CEA', Caps, Pkt}
Caps = #diameter_caps{}
Pkt  = #diameter_packet{}

एक आने वाली सीईए में त्रुटियां थीं और इसे अस्वीकार कर दिया गया है। Caps में केवल स्थानीय नोड के लिए मान होते हैं। Pkt में प्रश्न में CEA होता है।

{'CEA', timeout}

कनेक्शन की स्थापना के capx_timeout के भीतर एक अपेक्षित सीईए प्राप्त नहीं हुआ था।

{watchdog, Ref, PeerRef, {From, To}, Config}
Ref = transport_ref()
PeerRef = diameter_app:peer_ref()
From, To = initial | okay | suspect | down | reopen
Config = {connect|listen, [transport_opt()]}

एक RFC 3539 वॉचडॉग मशीन ने राज्य को बदल दिया है।

any()

आगे की संगतता के लिए, उपर्युक्त के अलावा अन्य रूपों की जानकारी फ़ील्ड प्राप्त करने के लिए एक ग्राहक तैयार किया जाना चाहिए।

service_name() = term()

एक सेवा का नाम जैसे कि start_service/2 और जिसके साथ सेवा की पहचान की गई है। किसी दिए गए नोड पर दिए गए नाम के साथ अधिकतम एक सेवा हो सकती है। ध्यान दें कि erlang:make_ref/0 का उपयोग सेवा नाम उत्पन्न करने के लिए किया जा सकता है जो कुछ अद्वितीय है।

service_opt()

विकल्प start_service/2 को दिया गया। किसी भी capability() साथ-साथ निम्नलिखित भी हो सकते हैं।

{application, [ application_opt() ]}

सेवा द्वारा समर्थित व्यास अनुप्रयोग।

एक सेवा को प्रत्येक व्यास के अनुप्रयोग के लिए एक टपल को कॉन्फ़िगर करना होगा जो इसका समर्थन करना चाहता है। एक आउटगोइंग अनुरोध के लिए, संबंधित application_alias() call/4 , जबकि एक आने वाले अनुरोध के लिए संदेश हेडर में एप्लिकेशन पहचानकर्ता आवेदन निर्धारित करता है, पहचानकर्ता एप्लिकेशन की diameter_dict(4) फ़ाइल में निर्दिष्ट किया जा रहा है।

चेतावनी

नोड द्वारा विज्ञापित क्षमताओं को इसके कॉन्फ़िगर किए गए अनुप्रयोगों से मेल खाना चाहिए। विशेष रूप से, application कॉन्फ़िगरेशन को विशेष रूप से * -Application-Id AVPs की संगत capability() कॉन्फ़िगरेशन द्वारा मेल खाना चाहिए।

{decode_format, record | list | map | none}

डीकोड किए गए संदेशों का प्रारूप और व्यास के रिकॉर्ड फ़ील्ड में क्रमशः AV_packet रिकॉर्ड और व्यास_पप रिकॉर्ड के value फ़ील्ड में समूहीकृत AVPs। यदि record तो एक रिकॉर्ड जिसकी परिभाषा प्रश्न में डिक्शनरी फ़ाइल से उत्पन्न हुई है। यदि list या map तो एक [Name | Avps] [Name | Avps] जोड़ी जहां एवीपी एवीपी नाम / मूल्यों जोड़े की एक सूची है या एवीपी नामों पर क्रमशः मैप किया गया है। यदि none तो एटम-मूल्य संदेश नाम, या एक ग्रुप एवीपी के लिए undefined । व्यास_कोड भी देखें diameter_codec:message()

record करने के लिए चूक।

ध्यान दें

AVPs avps रिकॉर्ड की एक सूची में avps स्वतंत्र रूप से decode_format रिकॉर्ड के क्षेत्र में avps किए decode_format

{restrict_connections, false | node | nodes | [node()] | eval()}

वह डिग्री जिसके लिए सेवा एक ही सहकर्मी को कई परिवहन कनेक्शन की अनुमति देती है, जैसा कि क्षमताओं के आदान-प्रदान में इसके मूल-मेजबान द्वारा पहचाना जाता है।

यदि [node()] तो एक कनेक्शन अस्वीकार कर दिया जाता है यदि कोई अन्य पहले से ही किसी निर्दिष्ट नोड पर मौजूद है। प्रकार false , node , nodes और eval() बराबर हैं [] , [node()] , [node()|nodes()] और मूल्यांकन मूल्य क्रमशः, प्रत्येक अभिव्यक्ति का मूल्यांकन जब भी एक नया कनेक्शन होना है। कायम करना। ध्यान दें कि false एक ही पीयर के साथ असीमित संख्या में कनेक्शन स्थापित करने की अनुमति देता है।

कई कनेक्शन स्वतंत्र हैं और उनके अपने सहकर्मी और वॉचडॉग राज्य मशीनों द्वारा शासित हैं।

nodes लिए चूक।

{sequence, {H,N} | eval() }

सेवा द्वारा उत्पन्न 32-बिट एंड-टू-एंड और हॉप-बाय-हॉप आइडेंटिफ़ायर के सबसे ऊपरी 32-N बिट्स के लिए एक निरंतर मान या तो स्पष्ट रूप से या start_service/2 पर मूल्यांकन किए जाने वाले फ़ंक्शन के वापसी मूल्य के रूप में । विशेष रूप से, एक पहचानकर्ता Id को नए पहचानकर्ता को निम्नानुसार मैप किया जाता है।

(H bsl N) bor (Id band ((1 bsl N) - 1))

ध्यान दें कि RFC 6733 के लिए आवश्यक है कि एंड-टू-एंड आइडेंटिफ़ायर कम से कम 4 मिनट की अवधि के लिए अद्वितीय रहे और यह और कॉल दर N उपयुक्त मानों पर कम बाध्यता रखता है: प्रति सेकंड R अनुरोधों की दर से, N -बिट काउंटर अपने सभी मूल्यों (1 bsl N) div (R*60) मिनटों को (1 bsl N) div (R*60) , इसलिए बाउंड 4*R*60 =< 1 bsl N

N की सीमा 0..32 होनी चाहिए और H एक गैर-ऋणात्मक पूर्णांक 1 bsl (32-N) से कम होना चाहिए।

{0,32} लिए चूक।

चेतावनी

एक ही डायमीटर नोड को लागू करने वाले कई एरलैंग नोड्स को विभिन्न अनुक्रम मास्क के साथ कॉन्फ़िगर किया जाना चाहिए ताकि यह सुनिश्चित हो सके कि प्रत्येक नोड आउटगोइंग अनुरोधों के लिए एंड-टू-एंड और हॉप-बाय-हॉप पहचानकर्ताओं की एक अद्वितीय श्रेणी का उपयोग करता है।

{share_peers, boolean() | [node()] | eval()}

स्थानीय इरलांग नोड पर स्थापित सहकर्मी कनेक्शन के लिए नोड्स को सूचित किया जाता है। साझा किए गए साथी दूरस्थ नोड्स पर pick_peer/4 कॉलबैक के लिए पास की गई दूरस्थ उम्मीदवारों की सूची में उपलब्ध हो जाते हैं जिनकी सेवाओं का उपयोग करने के लिए उन्हें कॉन्फ़िगर किया गया है: नीचे use_shared_peers देखें।

यदि false तो साथियों को साझा नहीं किया जाता है। यदि [node()] तो साथियों को नोड्स की निर्दिष्ट सूची के साथ साझा किया जाता है। यदि eval() तब साथियों को निर्दिष्ट फ़ंक्शन द्वारा लौटाए गए नोड्स के साथ साझा किया जाता है, तो मूल्यांकन किया जाता है कि जब भी कोई सहकर्मी कनेक्शन उपलब्ध हो या स्थानीय कनेक्शनों के बारे में दूरस्थ सेवा अनुरोध जानकारी उपलब्ध कराए। true मूल्य fun erlang:nodes/0 बराबर है fun erlang:nodes/0 । किसी सूची में मान node() को अनदेखा किया जाता है, इसलिए सेवाओं का एक संग्रह नोड्स की समान सूची के साथ साझा करने के लिए सभी को कॉन्फ़िगर किया जा सकता है।

false अवहेलना।

ध्यान दें

आउटगोइंग अनुरोध भेजने के उद्देश्य से साथियों को केवल उसी नाम की सेवाओं के साथ साझा किया जाता है। चूंकि call/4 लिए दिया गया application_opt() alias का मान, एक उपयुक्त उम्मीदवार के रूप में एक सहकर्मी की पहचान करने के लिए हैंडल है, जो सहयोगी साझा करते हैं, उन्हें अपने समर्थित अनुप्रयोगों की पहचान करने के लिए समान उपनाम का उपयोग करना चाहिए। उन्हें आमतौर पर समान capabilities() कॉन्फ़िगर करना चाहिए, क्योंकि सहकर्मी कनेक्शन साझा करके वे कई एर्लैंग नोड्स में एकल व्यास नोड के कार्यान्वयन को वितरित कर रहे हैं।

{strict_arities, boolean() | encode | decode}

यह आवश्यक है कि किसी संदेश या समूहीकृत AVP की संख्या AVP की संख्या के साथ सहमत है या नहीं, जो प्रश्न में शब्दकोष में निर्दिष्ट उन लोगों से सहमत है, जब संदेश diameter_app(3) कॉलबैक में भेज रहे हैं। यदि true तो एक आउटगोइंग संदेशों में बेमेल मेल संदेश विफल होने का कारण बनते हैं, जबकि एक आने वाले संदेश में बेमेल की रिपोर्ट 500_/5009 त्रुटियों के रूप में बताई जाती है, जो handle_answer/4 handle_request/3 या handle_answer/4 कॉलबैक में पारित किए गए handle_answer/4 रिकॉर्ड के त्रुटियों वाले क्षेत्र में होती है। यदि false तो न तो त्रुटि को लागू किया जाता है / पता लगाया जाता है। यदि encode या decode तो त्रुटियों को क्रमशः आउटगोइंग या इनकमिंग संदेशों पर लागू / पता लगाया जाता है।

true अवहेलना।

ध्यान दें

Arity Check को निष्क्रिय करना, Encode / Decode पर संदेशों के रूप को प्रभावित करता है। विशेष रूप से, डीकोड किए गए एवीपी को मूल्यों की सूचियों के रूप में दर्शाया जाता है, एवीपी की धमनी की परवाह किए बिना (अर्थात संदेश में प्रश्न में अपेक्षित संख्या / एवीपी व्याकरण), और मानों को एन्कोड पर सूचियों के रूप में आपूर्ति किए जाने की उम्मीद है। यह एक सूची में लिपटे नंगे मूल्यों के रूप में एवीपी 1 के एवीपी का प्रतिनिधित्व करने के ऐतिहासिक डिकोड व्यवहार से अलग है।

{string_decode, boolean()}

diameter_dict(4) और इसके व्युत्पन्न प्रकार diameter_dict(4) , diameter_dict(4) , diameter_dict(4) , diameter_dict(4) , और diameter_dict(4) AVPs को डीकोड करना है या नहीं। यदि true तो इन प्रकार के AVPs स्ट्रिंग () में डिकोड किए जाते हैं। यदि false तो मानों को बाइनरी () के रूप में बनाए रखा जाता है।

true अवहेलना।

चेतावनी

यह विकल्प false लिए सेट किया जाना चाहिए क्योंकि एक पर्याप्त दुर्भावनापूर्ण सहकर्मी अन्यथा बड़ी मात्रा में मेमोरी का उपभोग कर सकता है जब डिकोड किए गए डायमीटर संदेशों को प्रक्रियाओं के बीच पारित किया जाता है। डिफ़ॉल्ट मान पश्चगामी संगतता के लिए है।

{traffic_counters, boolean()}

एप्लिकेशन-विशिष्ट संदेशों की गणना करना या न करना; जिनके लिए diameter_app(3) कॉलबैक होते हैं। यदि गलत है तो केवल व्यास द्वारा संभाले गए संदेशों को ही गिना जाता है: सीईआर / सीईए, डीडब्ल्यूआर / डीडब्ल्यूए, डीपीआर / डीपीए।

true अवहेलना।

ध्यान दें

काउंटरों को अक्षम करना एक प्रदर्शन सुधार है, लेकिन इसका मतलब है कि छोड़े गए काउंटरों को service_info/2 द्वारा वापस नहीं किया जाता है।

{use_shared_peers, boolean() | [node()] | eval()}

नोड्स जिसमें से संचारित साथियों को दूरस्थ उम्मीदवारों को pick_peer/4 कॉलबैक की सूची में उपलब्ध कराया जाता है।

यदि false तो दूरस्थ साथियों का उपयोग नहीं किया जाता है। यदि [node()] तो नोड्स की निर्दिष्ट सूची से केवल साथियों का उपयोग किया जाता है। यदि eval() तो केवल निर्दिष्ट फ़ंक्शन द्वारा लौटाए गए साथियों का उपयोग किया जाता है, जब भी कोई दूरस्थ सेवा उपलब्ध सहकर्मी कनेक्शन के बारे में जानकारी का मूल्यांकन करती है। true मूल्य fun erlang:nodes/0 बराबर है fun erlang:nodes/0 । किसी सूची में मान node() को अनदेखा किया जाता है।

false अवहेलना।

ध्यान दें

एक सेवा जो साझा किए गए साथियों का उपयोग नहीं करती है, वह हमेशा खाली सूची को pick_peer/4 कॉलबैक के दूसरे तर्क के रूप में पारित करेगी।

चेतावनी

एक दूरस्थ नोड पर एक सहकर्मी कनेक्शन पर अनुरोध भेजना स्थानीय कनेक्शन पर भेजने से कम कुशल है। यह सेवा के लिए उपयोग करने के लिए बेहतर हो सकता service_opt() restrict_connections और प्रत्येक नोड पर एक समर्पित कनेक्शन बनाए रखना जिसमें से अनुरोध भेजा जाता है।

transport_opt()

applications या capabilities को छोड़कर कोई भी परिवहन विकल्प। परिवहन कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट के रूप में उपयोग किया जाता है, सेवा में कॉन्फ़िगर किए गए मानों को add_transport/2 लिए पास किए गए add_transport/2 ओवरराइडिंग।

transport_opt()

add_transport/2 विकल्प पास किया गया। निम्न में से एक प्रकार है।

{applications, [ application_alias() ]}

व्यास के आवेदन जिनके लिए परिवहन प्रतिबंधित होना चाहिए। विचाराधीन सेवा में कॉन्फ़िगर किए गए सभी अनुप्रयोगों के लिए डिफ़ॉल्ट। प्रश्न में सेवा पर कॉन्फ़िगर नहीं किए गए अनुप्रयोगों को अनदेखा किया जाता है।

चेतावनी

नोड द्वारा विज्ञापित क्षमताओं को इसके कॉन्फ़िगर किए गए अनुप्रयोगों से मेल खाना चाहिए। विशेष रूप से, परिवहन पर applications सेट करने का तात्पर्य है कि capabilities() टपल में मिलान * -Application-Id AVPs सेट करना।

{avp_dictionaries, [module()]}

वैकल्पिक शब्दकोश मॉड्यूल की एक सूची जिसके साथ AVPs को एनकोड / डिकोड करना है जो कि प्रश्न में एप्लिकेशन के शब्दकोश द्वारा परिभाषित नहीं हैं। डिकोड पर, इस तरह 'AVP' डीकोडेड संदेश या ग्रुपेड एवीपी के 'AVP' क्षेत्र में 'AVP' रिकॉर्ड के रूप में दर्शाया जाता है, पहला विकल्प जो एवीपी को रिकॉर्ड के मूल्य क्षेत्र को निर्धारित करने में सफल होता है। सांकेतिक शब्दों में बदलना, एक 'AVP' सूची में मानों को AVP नाम / मान 2-ट्यूपल्स के रूप में पारित किया जा सकता है, और यह इस तरह के एक tuple के AVP को परिभाषित करने के लिए कोई वैकल्पिक के लिए एक सांकेतिक त्रुटि है।

खाली सूची में चूक।

ध्यान दें

वैकल्पिक शब्दकोशों के लिए प्रेरणा RFC 7683, डायमीटर ओवरलोड इंडिकेशन कंजर्वेंस (DOIC) है, जो AVPs को अपने स्वयं के एप्लिकेशन को परिभाषित करने के बजाय मौजूदा एप्लिकेशन संदेशों पर रंजित होने के लिए परिभाषित करता है। DOIC डिक्शनरी व्यास एप्लिकेशन द्वारा प्रदान की जाती है, मॉड्यूल व्यास_gen_doic_rfc7683 के रूप में, लेकिन वैकल्पिक शब्दकोशों का उपयोग एवीपी के किसी भी सेट को एनकोड करने / डिकोड करने के लिए किया जा सकता है जो एप्लिकेशन डिक्शनरी के लिए ज्ञात नहीं है।

{capabilities, [ capability() ]}

AVPs आउटगोइंग CER / CEA संदेशों का निर्माण करते थे। मान प्रश्न में सेवा पर किसी भी निर्दिष्ट पर पूर्वता लेते हैं।

ट्रांसपोर्ट विकल्प के रूप में एक क्षमता को निर्दिष्ट करना इनबैंड-सिक्योरिटी-आईडी के लिए विशेष रूप से उपयुक्त हो सकता है, अगर TLS व्यास_tcp diameter_tcp(3) द्वारा कार्यान्वित के रूप में टीसीएस पर वांछित है।

{capabilities_cb, eval() }

कॉलबैक CER / CEA के रिसेप्शन पर लगाई गई क्षमताओं के आदान-प्रदान के दौरान यह पूछने के लिए कि क्या कनेक्शन स्वीकार किया जाना चाहिए या नहीं। कनेक्शन के transport_ref() और #diameter_caps{} रिकॉर्ड पर लागू होता है।

वापसी मान निम्न प्रकारों में से एक हो सकता है।

ok

कनेक्शन स्वीकार करें।

integer()

एक आने वाले CER को निर्दिष्ट परिणाम-कोड के साथ उत्तर दिया जाता है।

discard

सीईए भेजे जाने के बिना आने वाले सीईआर को खारिज कर दिया जाता है।

unknown

3010 , DIAMETER_UNKNOWN_PEER को लौटाने के बराबर।

कुछ भी लेकिन ok या 2xxx सीरीज़ रिजल्ट कोड को वापस करने से ट्रांसपोर्ट कनेक्शन टूट जाता है। कई capabilities_cb विकल्प निर्दिष्ट किए जा सकते हैं, जिस स्थिति में संबंधित कॉलबैक लागू किए जाते हैं, जब तक कि सभी वापस ok नहीं हो जाते हैं या एक नहीं होता है।

{capx_timeout, diameter_dict(4) }

मिलीसेकंड की संख्या जिसके बाद एक स्थापित परिवहन कनेक्शन होने वाली परिवहन प्रक्रिया समाप्त हो जाएगी यदि अपेक्षित क्षमताओं का आदान-प्रदान संदेश (सीईआर या सीईए) सहकर्मी से प्राप्त नहीं होता है। कनेक्टिंग ट्रांसपोर्ट के लिए, कनेक्शन प्रयासों का समय connect_timer या connect_timer एक्सपायरी द्वारा नियंत्रित होता है। एक सुनने के परिवहन के लिए, सहकर्मी समय निर्धारित करता है।

10000 तक की कमी।

{connect_timer, Tc}
Tc = diameter_dict(4)

एक कनेक्टिंग ट्रांसपोर्ट के लिए, RFC 6733 Tc टाइमर, मिलीसेकंड में। यह टाइमर उस आवृत्ति को निर्धारित करता है जिसके साथ एक परिवहन परिवहन कॉन्फ़िगरेशन के बाद अपने सहकर्मी के साथ एक प्रारंभिक कनेक्शन स्थापित करने का प्रयास करता है। एक बार प्रारंभिक कनेक्शन स्थापित हो जाने के बाद, वॉचडॉग_टाइमर आरएफसी 3539 द्वारा आवश्यक पुन: संयोजन प्रयासों की आवृत्ति निर्धारित करता है।

एक सुनने के परिवहन के लिए, टाइमर उस समय को निर्दिष्ट करता है जिसके बाद एक पहले से जुड़े सहकर्मी को भुला दिया जाएगा: इस समय के बाद एक कनेक्शन को पुनर्संस्थापन के बजाय एक प्रारंभिक कनेक्शन के रूप में माना जाता है, जिससे RFC 3539 राज्य मशीन REOPEN के बजाय OKAY राज्य में पास हो सकती है। ध्यान दें कि ये शब्दार्थ RFC द्वारा शासित नहीं हैं और एक श्रवण परिवहन का connect_timer अपने सहकर्मी के connect_timer प्लस के connect_timer से अधिक होना चाहिए।

कनेक्टिंग ट्रांसपोर्ट के लिए 30000 और सुनने के ट्रांसपोर्ट के लिए 60000 की कमी।

{disconnect_cb, eval() }

वॉचडॉग स्टेट OKAY वाले ट्रांसपोर्ट कनेक्शन की ट्रांसपोर्ट प्रक्रिया को समाप्त करने से पहले कॉलबैक लागू किया गया। आवेदन करने के लिए लागू किया गया application|service|transport और transport_ref() और stop_service/1 diameter_app:peer() प्रश्न में: application इंगित करता है कि व्यास अनुप्रयोग को रोका जा रहा है, service कि प्रश्न में सेवा stop_service/1 द्वारा रोका जा रहा है, और transport परिवहन प्रश्न में remove_transport/2 द्वारा हटाया जा रहा है।

वापसी मान निम्न प्रकारों में से एक हो सकता है।

{dpr, [option()]}

डिसकनेक्ट-पीयर-रिक्वेस्ट टू मोर, ट्रांसपोर्ट प्रक्रिया को डिसकनेक्ट-पीयर-आंसर या टाइमआउट के स्वागत के बाद समाप्त किया जाए। एक option() निम्नलिखित में से एक हो सकता है।

{cause, 0|rebooting|1|busy|2|goaway}

क्रमश: डिस्कनेक्ट-कॉज़, DO_NOT_WANT_TO_TALK_TO_YOU , DO_NOT_WANT_TO_TALK_TO_YOU और DO_NOT_WANT_TO_TALK_TO_YOU भेजने के लिए। Reason=service|application लिए rebooting लिए चूक। Reason=transport और Reason=transport लिए Reason=service|application और goaway

{timeout, diameter_dict(4) }

मिलीसेकंड की संख्या जिसके बाद परिवहन प्रक्रिया समाप्त हो जाती है यदि डीपीए प्राप्त नहीं हुआ है। dpa_timeout के मान के लिए डिफ़ॉल्ट।

dpr

{dpr, []} बराबर।

close

सहकर्मी को भेजे बिना डिस्कनेक्ट-पीयर-अनुरोध के परिवहन की प्रक्रिया को समाप्त करें।

ignore

कॉलबैक कॉन्फ़िगर नहीं होने के बराबर।

एकाधिक disconnect_cb विकल्प निर्दिष्ट किए जा सकते हैं, इस स्थिति में संबंधित कॉलबैक तब तक लागू किए जाते हैं, जब तक कि उनमें से कोई भी ignore अलावा कोई मान नहीं देता। ignore लौटने वाले सभी कॉलबैक उन्हें कॉन्फ़िगर नहीं करने के बराबर हैं।

एकल कॉलबैक dpr

{dpa_timeout, diameter_dict(4) }

मिलीसेकंड की संख्या जिसके बाद DPA प्राप्त नहीं होने पर एक निवर्तमान DPR के बाद एक परिवहन कनेक्शन समाप्त हो जाता है।

1000 तक की कमी।

{dpr_timeout, diameter_dict(4) }

मिलीसेकंड की संख्या जिसके बाद एक आने वाले डीपीआर के बाद परिवहन कनेक्शन समाप्त हो जाता है यदि सहकर्मी कनेक्शन बंद नहीं करता है।

5000 की कमी।

{incoming_maxlen, 0..16777215}

आने वाले व्यास संदेशों के अपेक्षित आकार पर बाध्य। निर्दिष्ट बाइट्स की तुलना में बड़े संदेशों को छोड़ दिया जाता है।

16777215 डिफ़ॉल्ट, व्यास व्यास में 24-बिट संदेश लंबाई फ़ील्ड का अधिकतम मूल्य।

{length_errors, exit|handle|discard}

आने वाले संदेश में डायमीटर हेडर के संदेश लंबाई क्षेत्र में त्रुटियों से कैसे निपटें। इस संदर्भ में एक त्रुटि यह है कि लंबाई कम से कम 20 बाइट्स (हैडर की लंबाई) नहीं है, 4 से अधिक नहीं है (एक वैध लंबाई) या प्रश्न में संदेश की लंबाई नहीं है, जैसा कि परिवहन पर प्राप्त हुआ है व्यास_ट्रासपोर्ट में इंटरफ़ेस प्रलेखित diameter_transport(3)

यदि exit तो प्रश्न में परिवहन प्रक्रिया बाहर निकल जाती है। यदि handle तब सामान्य रूप से संदेश संसाधित होता है, तो परिणामस्वरूप handle_answer/4 त्रुटि (DIAMETER_INVALID_MESSAGE_LENGTH) का संकेत करते हुए handle_answer/4 handle_request/3 या handle_answer/4 कॉलबैक (यदि कोई लेता है)। यदि discard तो प्रश्न में संदेश चुपचाप छोड़ दिया जाता है।

exit लिए चूक।

ध्यान दें

डिफ़ॉल्ट मान इस तथ्य को दर्शाता है कि टीसीपी जैसे स्ट्रीम-ओरिएंटेड ट्रांसपोर्ट के लिए एक ट्रांसपोर्ट मॉड्यूल एक संदेश लंबाई त्रुटि से उबरने में सक्षम नहीं हो सकता है क्योंकि इस तरह के परिवहन को व्यक्तिगत डायमीटर संदेशों में आने वाली बाइट स्ट्रीम को विभाजित करने के लिए संदेश लंबाई हेडर का उपयोग करना चाहिए। एक अमान्य लंबाई संदेश सीमाओं को फिर से परिभाषित करने के लिए कोई विश्वसनीय तरीका नहीं है, जिसके परिणामस्वरूप बाद के संदेशों की विफलता हो सकती है। उस मॉड्यूल के व्यवहार के लिए diameter_tcp(3) देखें।

{pool_size, pos_integer()}

परिवहन प्रक्रियाओं की संख्या शुरू करने के लिए। एक सुनने के परिवहन के लिए, परिवहन प्रक्रियाओं को स्वीकार करने के पूल के आकार को निर्धारित करता है, एक बड़ी संख्या कई समवर्ती सहकर्मी कनेक्शन प्रयासों के प्रसंस्करण के लिए वांछनीय है। एक कनेक्टिंग ट्रांसपोर्ट के लिए, प्रश्न में सहकर्मी को कनेक्शन की संख्या निर्धारित करता है जिसे एस्टेब्लश करने का प्रयास किया जाएगा: एक ही सहकर्मी को कई कनेक्शन देने की अनुमति देने के लिए service_opt() : restrict_connections को भी सेवा में कॉन्फ़िगर किया जाना चाहिए।

{spawn_opt, [term()]}

erlang:spawn_opt/2 लिए दिए गए विकल्प erlang:spawn_opt/2 आने वाले व्यास के अनुरोध के लिए एक प्रक्रिया को पैदा करते समय erlang:spawn_opt/2 । विकल्पों की monitor और link की अनदेखी की जाती है।

खाली सूची में चूक।

{strict_capx, boolean()]}

आरएफसी 6733 आवश्यकता को लागू करने या न करने के लिए कि क्षमताओं के आदान-प्रदान से पहले किसी भी संदेश को सहकर्मी कनेक्शन को बंद करना चाहिए। यदि झूठे हैं तो अप्रत्याशित संदेश छोड़ दिए जाते हैं।

सत्य की अवहेलना। इस परिणाम को गैर-मानक व्यवहार में परिवर्तित किया जा सकता है, लेकिन मामले में उपयोगी होने के कारण साथियों को बुरी तरह से व्यवहार करने के लिए जाना जाता है।

{strict_mbit, boolean()}

एवीपी को एम-बिट सेट करने के लिए गलत माना जाता है या नहीं, जब प्रश्न में कमांड व्याकरण स्पष्ट रूप से एवीपी की अनुमति नहीं देता है। यदि true तो ऐसी AVPs 5001 त्रुटियों के रूप में मानी जाती हैं, DIAMETER_AVP_UNSUPPORTED। यदि false तो एम-बिट को नजरअंदाज कर दिया जाता है और यह पुलिस की जिम्मेदारी बन जाती है।

true अवहेलना।

चेतावनी

RFC 6733 M-bit के शब्दार्थों के बारे में स्पष्ट नहीं है। एक हाथ, एक धारा व्याकरण में धारा 3.2 दस्तावेजों एवीपी में CCF विनिर्देशन किसी भी मनमाना AVP के रूप में; दूसरी ओर, 1.3.4 में कहा गया है कि एम-बिट की स्थापना करने वाले एवीपी को एक मौजूदा कमांड में नहीं जोड़ा जा सकता है: संशोधित कमांड को इसके बजाय एक नए डायमीटर एप्लिकेशन में रखा जाना चाहिए।

उत्तरार्द्ध का कारण संभवतः इंटरऑपरेबिलिटी है: एक आदेश में एम-बिट सेट करने के लिए मनमाने ढंग से एवीपी की अनुमति देना इसकी व्याख्या कार्यान्वयन पर निर्भर करता है, क्योंकि कोई गारंटी नहीं है कि सभी कार्यान्वयन किसी दिए गए आदेश के संदर्भ में मनमाने ढंग से एवीपी के एक ही सेट को समझेंगे। हालांकि, AVP -बिट की परवाह किए बिना किसी भी एवीपी के रूप में एक आदेश व्याकरण में AVP व्याख्या करना, 1.3.4 व्यर्थ को प्रस्तुत करता है, क्योंकि रिसीवर किसी भी एवीपी को अनदेखा कर सकता है, यह सोचता है कि प्रासंगिक नहीं है, प्रेषक के इरादे की परवाह किए बिना।

आज्ञा व्याकरण के अर्थ में अनिवार्य रूप से एम-बिट के अर्थ में भ्रमित करने से सावधान रहें। पूर्व एक शब्दार्थ आवश्यकता है: कि रिसीवर प्रश्न में संदर्भ में एवीपी के शब्दार्थ को समझता है। उत्तरार्द्ध एक वाक्यविन्यास आवश्यकता है: एवीपी को प्रश्न में संदेश में होना चाहिए या नहीं।

{transport_config, term()}
{transport_config, term(), diameter_dict(4) | infinity}

परिवहन प्रक्रिया शुरू करने के लिए टर्म प्रासंगिक transport module के start/3 फ़ंक्शन के तीसरे तर्क के रूप में पारित हुआ। खाली सूची में चूक।

3-टुपल फॉर्म इसके अलावा, मिलीसेकंड में एक अंतराल को निर्दिष्ट करता है, जिसके बाद एक शुरू की गई परिवहन प्रक्रिया को समाप्त कर दिया जाना चाहिए, अगर उसने अभी तक कोई कनेक्शन स्थापित नहीं किया है। उदाहरण के लिए, कनेक्टिंग ट्रांसपोर्ट पर निम्नलिखित विकल्प SCTP पर एक सहकर्मी के साथ या दूसरे पर (आमतौर पर समान) टीसीपी पर एक कनेक्शन का अनुरोध करते हैं।

{transport_module, diameter_sctp}
{transport_config, SctpOpts, 5000}
{transport_module, diameter_tcp}
{transport_config, TcpOpts}

SCTP और TCP दोनों पर सुनने के लिए, प्रत्येक के लिए एक परिवहन परिभाषित करें।

{transport_module, atom()}

diameter_transport(3) में एक परिवहन प्रक्रिया को लागू करने वाला मॉड्यूल diameter_transport(3) में परिभाषित किया गया है। व्यास_tcp की diameter_tcp

एकाधिक transport_module और transport_config विकल्पों की अनुमति है। इस मामले में इनका क्रम महत्वपूर्ण है (और केवल इस मामले में), एक transport_module का विकल्प सूची में पहले transport_config के साथ जोड़ा जा रहा है, या अनुगामी मॉड्यूल के लिए डिफ़ॉल्ट मान। जब तक कोई व्यक्ति संबंधित समयावधि (नीचे देखें) के भीतर कोई कनेक्शन स्थापित नहीं करता या सभी विफल नहीं हो जाते, तब तक प्रत्येक मॉड्यूल के साथ परिवहन शुरू करने का प्रयास किया जाएगा।

{watchdog_config, [{okay|suspect, non_neg_integer()}]}

कॉन्फ़िगरेशन जो वॉचडॉग स्टेट मशीन के व्यवहार को बदल देता है। कुंजी okay , REOPEN से OKAY में संक्रमण करने से पहले उत्तर दिए गए DWR संदेशों की गैर-नकारात्मक संख्या। कुंजी पर suspect , प्रहरी की संख्या ठीक से संक्रमण का संदेह करने के लिए जब डीडब्ल्यूआर अनुत्तरित है, या 0 के लिए संक्रमण नहीं बनाने से पहले टाइमआउट।

के लिए चूक [{okay, 3}, {suspect, 1}] । किसी कुंजी को निर्दिष्ट नहीं करना उस कुंजी के लिए डिफ़ॉल्ट मान निर्दिष्ट करने के बराबर है।

चेतावनी

डिफ़ॉल्ट मान RFC 3539 द्वारा आवश्यक है: इसे बदलने से गैर-मानक व्यवहार होता है जिसका उपयोग केवल परीक्षण के दौरान दुर्व्यवहार नोड्स का अनुकरण करने के लिए किया जाना चाहिए।

{watchdog_timer, TwInit}
TwInit = diameter_dict(4)
       | {M,F,A}

RFC 3539 वॉचडॉग टाइमर। पूर्णांक मान को RFC के TwInit के रूप में व्याख्या किया जाता है मिलीसेकंड में, RFC के Tw की गणना करने के लिए टाइमर के प्रत्येक रियरिंग में each each 2 सेकंड का एक जोड़ जोड़ा जाता है। एक एमएफए को आरएफसी के सीधे वापस लौटने की उम्मीद है, जो घबराने के साथ लागू होती है, जिससे कॉलबैक द्वारा जिटर गणना की जा सकती है।

RFC 3539 द्वारा आवश्यक पूर्णांक मान कम से कम 6000 होना चाहिए। 30000 तक की कमी।

गैर-मान्यता प्राप्त विकल्पों को चुपचाप नजरअंदाज कर दिया जाता है, लेकिन द्वारा अनमॉडिफाइड लौटा दिया जाता है service_info/2 और इसे पारित किए गए विधेय कार्यों में संदर्भित किया जा सकता है remove_transport/2

transport_ref() = reference()

इसके द्वारा लौटाया गया संदर्भ add_transport/2 विन्यास की पहचान करता है।

निर्यात

add_transport (SvcName, {Connect | सुनें, [Opt]}) -> {ok, Ref} | {त्रुटि, कारण}

प्रकार

एक सेवा में परिवहन क्षमता जोड़ें।

सेवा सहकर्मी के साथ संबंध स्थापित करने के लिए, या तो सहकर्मी ( connect ) से जुड़कर या आने वाले कनेक्शन अनुरोधों ( listen ) को स्वीकार करने के लिए परिवहन प्रक्रियाओं को शुरू करेगी । एक कनेक्टिंग ट्रांसपोर्ट सबसे अधिक सहकर्मी के साथ परिवहन कनेक्शन स्थापित करता है, कई के साथ संभावित रूप से सुनने वाला ट्रांसपोर्ट।

व्यास आवेदन सहकर्मी के साथ सीईआर / सीईए के आदान-प्रदान की जिम्मेदारी लेता है। क्षमताओं के सफल समापन पर, सेवा प्रत्येक प्रासंगिक एप्लिकेशन मॉड्यूल के peer_up/3 कॉलबैक का आदान-प्रदान करती है जिसके बाद कॉलर परिवहन पर सहकर्मी के साथ व्यास के संदेशों का आदान-प्रदान कर सकता है। सीईआर / सीईए के अलावा, सेवा DWR / DWA से निपटने के लिए और RFC 3539 द्वारा आवश्यक है, साथ ही साथ DPR / DPA के लिए भी ज़िम्मेदारी लेता है।

लौटा हुआ संदर्भ विशिष्ट रूप से सेवा के दायरे में परिवहन की पहचान करता है। ध्यान दें कि फ़ंक्शन ट्रांसपोर्ट कनेक्शन स्थापित होने से पहले देता है।

ध्यान दें

यह एक सेवा में परिवहन को जोड़ने के लिए एक त्रुटि नहीं है जिसे अभी तक कॉन्फ़िगर नहीं किया गया है: एक सेवा को उसके परिवहन को कॉन्फ़िगर करने के बाद शुरू किया जा सकता है।

call (SvcName, App, Request, [Opt]) -> उत्तर | ठीक है | {त्रुटि, कारण}

प्रकार

डायमीटर अनुरोध संदेश भेजें।

App व्यास आवेदन को निर्दिष्ट करता है जिसमें अनुरोध को परिभाषित किया गया है और संबंधित कॉलबैक मॉड्यूल पर कॉलबैक नीचे और नीचे वर्णित के अनुसार होगा diameter_app(3) । जब तक detach विकल्प निर्दिष्ट नहीं किया जाता है, तब कॉल या तो वापस आती है जब सहकर्मी से उत्तर संदेश प्राप्त होता है या कोई त्रुटि होती है। उत्तर मामले में, वापसी मूल्य एक handle_answer/4 कॉलबैक द्वारा वापस किया जाता है । त्रुटि मामले में, त्रुटि व्यास द्वारा या handle_error/4 कॉलबैक से सीधे वापस की जाती है या नहीं, यह इस बात पर निर्भर करता है कि सहकर्मी को ट्रांसमिशन के लिए आउटगोइंग अनुरोध सफलतापूर्वक एन्कोड किया गया है या नहीं, नीचे दिए गए मामलों को दर्ज किया जा रहा है।

यदि कोई उपयुक्त सहकर्मी नहीं हैं, या यदि pick_peer/4 उन्हें वापस करके अस्वीकार कर दिया जाता है false , तो वापस कर दिया जाता {error,no_connection} है। अन्यथा pick_peer/4 एक के बाद आता है prepare_request/3 , कॉलबैक संदेश एन्कोड किया गया है और फिर भेज दिया।

कई त्रुटि मामले हैं जो एक जवाब को handle_answer/4 कॉलबैक में प्राप्त और पारित होने से रोक सकते हैं :

  • यदि निवर्तमान अनुरोध का प्रारंभिक एनकोड विफल हो जाता है, तो अनुरोध प्रक्रिया विफल हो जाती है और {error,encode} वापस आ जाती है।

  • यदि अनुरोध सफलतापूर्वक एन्कोड किया गया है और भेजा गया है, लेकिन उत्तर समय समाप्त हो जाता है तो handle_error/4 कॉलबैक होता है Reason = timeout

  • यदि अनुरोध सफलतापूर्वक एन्कोड किया गया है और भेजा गया है, लेकिन जवाब मिलने से पहले ही सेवा बंद कर दी जाती है तो handle_error/4 कॉलबैक हो जाता है Reason = cancel

  • यदि सहकर्मी के साथ परिवहन कनेक्शन अनुरोध भेजे जाने के बाद कम हो जाता है, लेकिन एक उत्तर प्राप्त होने से पहले फिर एक वैकल्पिक सहकर्मी को अनुरोध को फिर से भेजने का प्रयास किया जाता है। यदि ऐसा कोई सहकर्मी उपलब्ध नहीं है, या यदि बाद में pick_peer/4 कॉलबैक उम्मीदवारों को अस्वीकार करता है, तो handle_error/4 कॉलबैक होता है Reason = failover । यदि एक सहकर्मी का चयन किया जाता है तो prepare_retransmit/3 कॉलबैक होता है, जिसके बाद प्रारंभिक prepare_request/3 कॉलबैक के बाद शब्दार्थ समान होते हैं ।

  • यदि कोई त्रुटि फिर से शुरू करने के दौरान होती है तो अनुरोध प्रक्रिया विफल हो जाती है और {error,failure} वापस आ जाती है।

  • एक आवेदन कॉलबैक अनुरोध पर कार्रवाई करने में किया विफल रहता है (pick_peer, prepare_request, prepare_retransmit, handle_answer या handle_error) तो या तो {error,encode} या {error,failure} पर किया जाए या नहीं परिवहन से अधिक अनुरोध भेजने के लिए एक प्रयास किया गया है के आधार दिया जाता है।

ध्यान दें कि {error,encode} एकमात्र वापसी मूल्य है जो गारंटी देता है कि परिवहन कनेक्शन पर अनुरोध नहीं भेजा गया है।

Orig_state_id () -> Unsigned32 ()

आउटगोइंग संदेशों में उत्पत्ति-राज्य-आईडी के रूप में उपयोग के लिए एक उचित मूल्य लौटाएं।

लौटाया गया मान 19680120T031408Z के बाद से सेकंड की संख्या है, पहला मान जो व्यास के रूप में एन्कोड किया जा सकता है diameter_dict(4) , उस समय व्यास अनुप्रयोग शुरू किया गया था।

remove_transport (SvcName, Pred) -> ठीक है | {त्रुटि, कारण}

प्रकार

पहले जोड़े गए ट्रांसपोर्ट को हटा दें।

Pred निर्धारित करता है कि किसको हटाने के लिए परिवहन करता है। एक एरिटी -3-वैल्यू Pred सभी ट्रांसपोर्ट को हटा देती Pred(Ref, Type, Opts) है true , जिसके लिए रिटर्न , जहां Type और Opts जैसे-जैसे पास होता है add_transport/2 और Ref उसके द्वारा लौटाया जाता है। शेष फॉर्म निम्नानुसार एक एरिटी -3 मज़ा के बराबर हैं।

Pred = fun(transport_ref(), list()):  fun(Ref, _, Opts) -> Pred(Ref, Opts) end
Pred = fun(list()):                   fun(_, _, Opts) -> Pred(Opts) end
Pred = transport_ref():               fun(Ref, _, _)  -> Pred == Ref end
Pred = list():                        fun(_, _, Opts) -> [] == Pred -- Opts end
Pred = true:                          fun(_, _, _) -> true end
Pred = false:                         fun(_, _, _) -> false end
Pred = {M,F,A}:  fun(Ref, Type, Opts) -> apply(M, F, [Ref, Type, Opts | A]) end

एक परिवहन को हटाने से संबंधित परिवहन प्रक्रिया समाप्त हो जाती है। किसी सहकर्मी को डीपीआर संदेश भेजा जाता है या नहीं disconnect_cb , परिवहन पर कॉन्फ़िगर के मूल्य से नियंत्रित होता है ।

service_info (SvcName, Info) -> टर्म ()

प्रकार

किसी आरंभ की गई सेवा के बारे में जानकारी लौटाएँ। किसी अज्ञात सेवा के लिए जानकारी का अनुरोध undefined करने का कारण बनता है। आइटमों की सूची का अनुरोध करने से टैग की गई सूची वापस आ जाती है।

Item निम्नलिखित में से एक हो सकता है।

'Origin-Host'
'Origin-Realm'
'Vendor-Id'
'Product-Name'
'Origin-State-Id'
'Host-IP-Address'
'Supported-Vendor'
'Auth-Application-Id'
'Inband-Security-Id'
'Acct-Application-Id'
'Vendor-Specific-Application-Id'
'Firmware-Revision'

के साथ कॉन्फ़िगर के रूप में एक क्षमता मान लौटें start_service/2

applications

के साथ कॉन्फ़िगर के रूप में आवेदनों की सूची लौटें start_service/2

capabilities

सभी क्षमताओं मानों की टैग की गई सूची लौटाएं, जिनके साथ कॉन्फ़िगर किया गया है start_service/2

transport

सेवा के परिवहन में से प्रत्येक के लिए एक प्रविष्टि युक्त सूची लौटाएं, जिसके साथ कॉन्फ़िगर किया गया है add_transport/2 । प्रत्येक प्रविष्टि एक टैग की गई सूची होती है जिसमें कॉन्फ़िगरेशन और स्थापित सहकर्मी कनेक्शन दोनों की जानकारी होती है। उत्पत्ति-मेज़बान "client.example.com" के साथ क्लाइंट सेवा के लिए एक उदाहरण रिटर्न वैल्यू "server.example.com" से जुड़े एकल परिवहन के साथ कॉन्फ़िगर किया गया है जो निम्न प्रकार से दिखाई दे सकता है।

[[{ref,#Ref<0.0.0.93>},
  {type,connect},
  {options,[{transport_module,diameter_tcp},
            {transport_config,[{ip,{127,0,0,1}},
                               {raddr,{127,0,0,1}},
                               {rport,3868},
                               {reuseaddr,true}]}]},
  {watchdog,{<0.66.0>,-576460736368485571,okay}},
  {peer,{<0.67.0>,-576460736357885808}},
  {apps,[{0,common}]},
  {caps,[{origin_host,{"client.example.com","server.example.com"}},
         {origin_realm,{"example.com","example.com"}},
         {host_ip_address,{[{127,0,0,1}],[{127,0,0,1}]}},
         {vendor_id,{0,193}},
         {product_name,{"Client","Server"}},
         {origin_state_id,{[],[]}},
         {supported_vendor_id,{[],[]}},
         {auth_application_id,{[0],[0]}},
         {inband_security_id,{[],[0]}},
         {acct_application_id,{[],[]}},
         {vendor_specific_application_id,{[],[]}},
         {firmware_revision,{[],[]}},
         {avp,{[],[]}}]},
  {port,[{owner,<0.69.0>},
         {module,diameter_tcp},
         {socket,{{127,0,0,1},48758}},
         {peer,{{127,0,0,1},3868}},
         {statistics,[{recv_oct,656},
                      {recv_cnt,6},
                      {recv_max,148},
                      {recv_avg,109},
                      {recv_dvi,19},
                      {send_oct,836},
                      {send_cnt,6},
                      {send_max,184},
                      {send_avg,139},
                      {send_pend,0}]}]},
  {statistics,[{{{0,258,0},recv},3},
               {{{0,258,1},send},3},
               {{{0,258,0},recv,{'Result-Code',2001}},3},
               {{{0,257,0},recv},1},
               {{{0,257,1},send},1},
               {{{0,257,0},recv,{'Result-Code',2001}},1},
               {{{0,280,1},recv},2},
               {{{0,280,0},send},2},
               {{{0,280,0},send,{'Result-Code',2001}},2}]}]]

यहाँ ref एक transport_ref() और options इसी transport_opt() सूची को पारित किया गया है add_transport/2 watchdog प्रवेश एक कनेक्शन के आरएफसी 3539 प्रहरी राज्य मशीन की स्थिति दिखाता है। peer प्रविष्टि को दिखाता है diameter_app:peer_ref() जिसके लिए वहाँ किया गया है जाएगा peer_up/3 द्वारा की पहचान व्यास अनुप्रयोगों के लिए कॉलबैक apps प्रविष्टि, common किया जा रहा है application_alias() caps प्रविष्टि क्षमताओं विनिमय दौरान सहकर्मी से स्थानीय नोड द्वारा भेजे और प्राप्त क्षमताओं को पहचानती है। port प्रवेश परिवहन कनेक्शन के बारे में सॉकेट स्तरीय जानकारी प्रदर्शित करता है। statistics प्रवेश व्यास स्तर के काउंटर, की तरह एक प्रवेश प्रस्तुत करता है {{{0,280,1},recv},2} : कह रही है कि ग्राहक 2 डीडब्ल्यूआर संदेशों प्राप्त हुआ है {0,280,1} = {Application_Id, Command_Code, R_Flag}

ध्यान दें कि watchdog , peer , apps , caps और port प्रविष्टियों सहकर्मी के साथ कनेक्टिविटी पर निर्भर करते हैं और नहीं भी हो सकता। यह भी ध्यान दें कि statistics प्रविष्टि परिवहन कॉन्फ़िगरेशन के जीवनकाल के दौरान संचित मूल्यों को प्रस्तुत करती है।

एक सुनने का परिवहन अपनी जानकारी को थोड़ा अलग तरीके से प्रस्तुत करता है क्योंकि उसी के लिए कई स्वीकृत कनेक्शन हो सकते हैं transport_ref() transport जानकारी एक भी ग्राहक संबंध ऐसा नज़र आ सकता के साथ एक सर्वर से लौट आए।

[[{ref,#Ref<0.0.0.61>},
  {type,listen},
  {options,[{transport_module,diameter_tcp},
            {transport_config,[{reuseaddr,true},
                               {ip,{127,0,0,1}},
                               {port,3868}]}]},
  {accept,[[{watchdog,{<0.56.0>,-576460739249514012,okay}},
            {peer,{<0.58.0>,-576460638229179167}},
            {apps,[{0,common}]},
            {caps,[{origin_host,{"server.example.com","client.example.com"}},
                   {origin_realm,{"example.com","example.com"}},
                   {host_ip_address,{[{127,0,0,1}],[{127,0,0,1}]}},
                   {vendor_id,{193,0}},
                   {product_name,{"Server","Client"}},
                   {origin_state_id,{[],[]}},
                   {supported_vendor_id,{[],[]}},
                   {auth_application_id,{[0],[0]}},
                   {inband_security_id,{[],[]}},
                   {acct_application_id,{[],[]}},
                   {vendor_specific_application_id,{[],[]}},
                   {firmware_revision,{[],[]}},
                   {avp,{[],[]}}]},
            {port,[{owner,<0.62.0>},
                   {module,diameter_tcp},
                   {socket,{{127,0,0,1},3868}},
                   {peer,{{127,0,0,1},48758}},
                   {statistics,[{recv_oct,1576},
                                {recv_cnt,16},
                                {recv_max,184},
                                {recv_avg,98},
                                {recv_dvi,26},
                                {send_oct,1396},
                                {send_cnt,16},
                                {send_max,148},
                                {send_avg,87},
                                {send_pend,0}]}]}],
           [{watchdog,{<0.72.0>,-576460638229717546,initial}}]]},
  {statistics,[{{{0,280,0},recv},7},
               {{{0,280,1},send},7},
               {{{0,280,0},recv,{'Result-Code',2001}},7},
               {{{0,258,1},recv},3},
               {{{0,258,0},send},3},
               {{{0,258,0},send,{'Result-Code',2001}},3},
               {{{0,280,1},recv},5},
               {{{0,280,0},send},5},
               {{{0,280,0},send,{'Result-Code',2001}},5},
               {{{0,257,1},recv},1},
               {{{0,257,0},send},1},
               {{{0,257,0},send,{'Result-Code',2001}},1}]}]]

यहां प्रस्तुत की गई जानकारी इस connect मामले में है सिवाय इसके कि क्लाइंट कनेक्शन को एक accept ट्यूपल के तहत समूहीकृत किया जाता है ।

transport_opt() pool_size कॉन्फ़िगर किया गया है या नहीं, कनेक्टिंग ट्रांसपोर्ट के मामले में लिस्टिंग के प्रारूप को प्रभावित करता है, क्योंकि 1 से अधिक मूल्य एक ही के लिए कई ट्रांसपोर्ट प्रक्रियाओं का अर्थ है transport_ref() , जैसा कि सुनने के मामले में है। इस मामले में प्रारूप सुनने के मामले के समान है, एक pool ट्यूपल के स्थान पर एक accept ट्यूपल के साथ।

connections

प्रत्येक स्थापित परिवहन कनेक्शन के लिए एक प्रविष्टि वाली सूची लौटाएं, जिसकी निगरानी राज्य मशीन राज्य में नहीं है down । यह transport जानकारी का एक सपाट दृश्य है जो केवल सक्रिय कनेक्शन को सूचीबद्ध करता है और जिसके लिए व्यास-स्तर के आँकड़े केवल परिवहन कनेक्शन के जीवनकाल के लिए जमा होते हैं। ऊपर सर्वर के लिए एक वापसी मान निम्नानुसार हो सकता है।

[[{ref,#Ref<0.0.0.61>},
  {type,accept},
  {options,[{transport_module,diameter_tcp},
            {transport_config,[{reuseaddr,true},
                               {ip,{127,0,0,1}},
                               {port,3868}]}]},
  {watchdog,{<0.56.0>,-576460739249514012,okay}},
  {peer,{<0.58.0>,-576460638229179167}},
  {apps,[{0,common}]},
  {caps,[{origin_host,{"server.example.com","client.example.com"}},
         {origin_realm,{"example.com","example.com"}},
         {host_ip_address,{[{127,0,0,1}],[{127,0,0,1}]}},
         {vendor_id,{193,0}},
         {product_name,{"Server","Client"}},
         {origin_state_id,{[],[]}},
         {supported_vendor_id,{[],[]}},
         {auth_application_id,{[0],[0]}},
         {inband_security_id,{[],[]}},
         {acct_application_id,{[],[]}},
         {vendor_specific_application_id,{[],[]}},
         {firmware_revision,{[],[]}},
         {avp,{[],[]}}]},
  {port,[{owner,<0.62.0>},
         {module,diameter_tcp},
         {socket,{{127,0,0,1},3868}},
         {peer,{{127,0,0,1},48758}},
         {statistics,[{recv_oct,10124},
                      {recv_cnt,132},
                      {recv_max,184},
                      {recv_avg,76},
                      {recv_dvi,9},
                      {send_oct,10016},
                      {send_cnt,132},
                      {send_max,148},
                      {send_avg,75},
                      {send_pend,0}]}]},
  {statistics,[{{{0,280,0},recv},62},
               {{{0,280,1},send},62},
               {{{0,280,0},recv,{'Result-Code',2001}},62},
               {{{0,258,1},recv},3},
               {{{0,258,0},send},3},
               {{{0,258,0},send,{'Result-Code',2001}},3},
               {{{0,280,1},recv},66},
               {{{0,280,0},send},66},
               {{{0,280,0},send,{'Result-Code',2001}},66},
               {{{0,257,1},recv},1},
               {{{0,257,0},send},1},
               {{{0,257,0},send,{'Result-Code',2001}},1}]}]]

ध्यान दें कि जानकारी के ref विपरीत एक ही के साथ कई प्रविष्टियाँ हो सकती हैं transport

statistics

{{Counter, Ref}, non_neg_integer()} काउंटर मानों की सूची लौटाएं । या Ref तो एक transport_ref() या एक हो सकता है diameter_app:peer_ref() । बाद वाले के लिए प्रवेश पूर्व के लिए संबंधित प्रविष्टियों में तह किए जाते हैं क्योंकि सहकर्मी कनेक्शन नीचे जाते हैं। दोनों के लिए प्रविष्टियाँ हटा दी जाती हैं remove_transport/2 । व्यास transport और आँकड़ों द्वारा लौटाए गए और connections जानकारी इन प्रविष्टियों पर आधारित हैं।

diameter_app:peer_ref()

एक एकल सहकर्मी से जुड़ा ट्रांसपोर्ट कॉन्फ़िगरेशन लौटाएं, जैसा कि पास किया गया add_transport/2 । यदि सहकर्मी अज्ञात है, तो दी गई सूची खाली है। अन्यथा इसमें शामिल है ref , type और ऊपर और जानकारी के options रूप में tuples । transport connections उदाहरण के लिए:

[{ref,#Ref<0.0.0.61>},
 {type,accept},
 {options,[{transport_module,diameter_tcp},
           {transport_config,[{reuseaddr,true},
                              {ip,{127,0,0,1}},
                              {port,3868}]}]}]
सेवाएँ () -> [SvcName]

प्रकार

शुरू की गई सेवाओं की सूची लौटाएं।

session_id (पहचान) -> OctetString ()

प्रकार

एक सत्र-आईडी AVP के लिए एक मान लौटाएं।

मान में RFC 6733 के खंड 8.8 के लिए आवश्यक प्रपत्र है। पहचान पीयर की उत्पत्ति-मेज़बान होनी चाहिए, जहाँ से लौटाया गया मान युक्त संदेश भेजा जाएगा।

start () -> ठीक है | {त्रुटि, कारण}

व्यास आवेदन शुरू करें।

सेवा शुरू करने से पहले व्यास आवेदन शुरू किया जाना चाहिए। एक उत्पादन प्रणाली में यह आमतौर पर एक बूट फ़ाइल द्वारा पूरा किया जाता है, start/0 स्पष्ट रूप से कॉल करके नहीं ।

start_service (SvcName, Options) -> ठीक | {त्रुटि, कारण}

प्रकार

व्यास सेवा शुरू करें।

एक सेवा स्थानीय रूप से लागू व्यास नोड को परिभाषित करती है, क्षमताओं के आदान-प्रदान के दौरान विज्ञापित होने वाली क्षमताओं को निर्दिष्ट करती है। एक सेवा का उपयोग करके ट्रांसपोर्ट जोड़े जाते हैं add_transport/2

ध्यान दें

एक परिवहन दोनों अपनी सेवा की क्षमताओं को ओवरराइड कर सकते हैं और अपने समर्थित व्यास अनुप्रयोगों को प्रतिबंधित कर सकते हैं ताकि "सेवा = व्यास नोड की उत्पत्ति-मेज़बान द्वारा पहचान की गई" जरूरी नहीं है।

रोक () -> ठीक है | {त्रुटि, कारण}

व्यास अनुप्रयोग बंद करो।

stop_service (SvcName) -> ठीक | {त्रुटि, कारण}

प्रकार

व्यास सेवा बंद करो।

एक सेवा को रोकने से सभी संबद्ध परिवहन कनेक्शन टूट जाते हैं। के मामले में एक डीपीआर संदेश भेजा जाएगा remove_transport/2

ध्यान दें

किसी सेवा को रोकना किसी भी संबंधित ट्रांसपोर्ट को नहीं हटाता है: remove_transport/2 ट्रांसपोर्ट कॉन्फ़िगरेशन को हटाने के लिए बुलाया जाना चाहिए।

सदस्यता (SvcName) -> सच है

प्रकार

service_event() किसी सेवा के संदेशों की सदस्यता लें ।

यह एक ऐसी सेवा से घटनाओं की सदस्यता लेने के लिए एक त्रुटि नहीं है जो अभी तक मौजूद नहीं है। ट्रांसपोर्ट जोड़ने से पहले ऐसा करना सभी परिवहन-संबंधित घटनाओं के स्वागत की गारंटी के लिए आवश्यक है।

सदस्यता समाप्त करें (SvcName) -> सत्य

प्रकार

किसी सेवा से संदेशों को इवेंट करने के लिए अनसब्सक्राइब करें।

यह भी देखें

diameter_app(3) , diameter_transport(3) , diameter_dict(4)

Original text