Erlang 21

diameter_transport




erlang

diameter_transport

मॉड्यूल

diameter_transport

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

व्यास परिवहन इंटरफ़ेस।

विवरण

diameter:add_transport/2 लिए एक transport_module रूप में निर्दिष्ट एक मॉड्यूल diameter:add_transport/2 को यहां प्रलेखित इंटरफ़ेस को लागू करना चाहिए। इंटरफ़ेस में एक फ़ंक्शन होता है जिसके साथ व्यास एक परिवहन प्रक्रिया शुरू करता है और एक संदेश इंटरफ़ेस जिसके साथ परिवहन प्रक्रिया उस प्रक्रिया के साथ संचार करती है जो इसे शुरू करती है (उर्फ अपने माता-पिता)।

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

message() = binary() | diameter_codec:packet()

एक डायमीटर संदेश जैसा कि ट्रांसपोर्ट इंटरफेस पर दिया गया है।

ट्रांसपोर्ट प्रक्रिया से एक इनबाउंड संदेश के लिए, एक diameter_codec:packet() में अपने bin क्षेत्र में प्राप्त संदेश शामिल होना चाहिए। इनबाउंड अनुरोध के मामले में, transport_data फ़ील्ड में सेट किया गया कोई भी मान तब तक संबंधित उत्तर संदेश में परिवहन मॉड्यूल में वापस आ जाएगा, जब तक कि प्रेषक किसी अन्य मूल्य की आपूर्ति नहीं करता।

एक ट्रांसपोर्ट प्रक्रिया के लिए एक आउटबाउंड संदेश के लिए, एक diameter_codec:packet() का अपने transport_data क्षेत्र में undefined अलावा एक मूल्य है और इसके bin क्षेत्र में भेजने के लिए बाइनरी () है।

निर्यात

मॉड: स्टार्ट ({टाइप, रेफ}, एसवीसी, कॉन्फिगरेशन) -> {ओके, पिड} | {ठीक है, पिड, LAddrs} | {त्रुटि, कारण}

प्रकार

एक परिवहन प्रक्रिया शुरू करें। व्यास द्वारा एक कॉल को व्यास के रूप में कहा जाता है diameter:add_transport/2 क्रम में एक परिवहन कनेक्शन को क्रमशः स्थापित या स्वीकार करने के लिए। एक परिवहन प्रक्रिया एकल दूरस्थ सहकर्मी के साथ संबंध बनाए रखती है।

Type इंगित करता है कि क्या एक कनेक्टिंग ( Type=connect ) या सुनने ( Type=accept ) परिवहन के लिए प्रश्न में परिवहन प्रक्रिया शुरू हो रही है। बाद के मामले में, कई साथियों से कनेक्शन स्वीकार करने के लिए परिवहन प्रक्रिया शुरू की जाती है।

Ref वह मान है जो कॉल से diameter:add_transport/2 में लौटाया गया था diameter:add_transport/2 जिसमें ट्रांसपोर्ट प्रक्रिया शुरू करने की ओर ले जाता है।

Svc में diameter:start_service/2 को पारित करने की क्षमताएँ हैं diameter:start_service/2 और diameter:add_transport/2 , मान उन पूर्ववर्तीों को पार कर गए जो पूर्व में गए थे।

Config diameter:transport_opt() में transport_config tuple के रूप में पारित किया गया diameter:transport_opt() diameter:add_transport/2 लिए पारित सूची diameter:add_transport/2

प्रारंभ फ़ंक्शन को स्थानीय IP पतों की उपयुक्त सूची का चयन करने और वापस करने के लिए Svc और / या Config में Host-IP-Address सूची का उपयोग करना चाहिए। कनेक्टिंग मामले में, कनेक्शन की स्थापना के बाद स्थानीय पता सूची को एक connected संदेश (नीचे MESSAGES देखें) में संप्रेषित किया जा सकता है। या तो मामले में, स्थानीय पता सूची का उपयोग Host-IP-Address एवीपी को आउटगोइंग क्षमताओं के संदेशों को आबाद करने के लिए किया जाता है यदि Host-IP-Address अनिर्दिष्ट है।

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

संदेशों

परिवहन इंटरफ़ेस पर भेजे गए सभी संदेश फॉर्म {diameter, term()}

एक परिवहन प्रक्रिया अपने माता-पिता से निम्न प्रकार के संदेशों की अपेक्षा कर सकती है।

{diameter, {send, message() }}

एक आउटबाउंड व्यास संदेश।

{diameter, {close, Pid}}

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

{diameter, {tls, Ref, Type, Bool}}

टीएलएस का उपयोग करके इनबाउंड सुरक्षा का चयन किया है या नहीं, इसका संकेत इंडक्शन ने किया है। Ref एक संदर्भ () है जिसे परिवहन के मूल प्रक्रिया के लिए {diameter, {tls, Ref}} उत्तर संदेश में शामिल किया जाना चाहिए (नीचे देखें)। Type या तो connect या इस पर निर्भर करता है कि क्या प्रक्रिया एक कनेक्टिंग या सुनने के परिवहन के लिए शुरू की गई है। Bool एक बूलियन है () यह दर्शाता है कि परिवहन कनेक्शन को टीएलएस में अपग्रेड किया जाना चाहिए या नहीं।

यदि टीएलएस का अनुरोध किया जाता है ( Bool=true ) तो एक कनेक्टिंग प्रक्रिया को पीएलएस के साथ एक टीएलएस हैंडशेक शुरू करना चाहिए और एक स्वीकार प्रक्रिया को हैंडशेक स्वीकार करने के लिए तैयार करना चाहिए। पैरेंट प्रक्रिया के लिए एक सफल हैंडशेक को {diameter, {tls, Ref}} संदेश द्वारा अनुसरण किया जाना चाहिए। एक असफल हैंडशेक प्रक्रिया से बाहर निकलने का कारण होना चाहिए।

यह संदेश केवल ट्रांसपोर्ट प्रक्रिया को भेजा जाता है, जिसके Inband-Security-Id कॉन्फ़िगरेशन ने TLS के लिए समर्थन का संकेत दिया है।

एक परिवहन प्रक्रिया को अपने माता-पिता को निम्न प्रकार के संदेश भेजने चाहिए।

{diameter, {self(), connected}}

माता-पिता को सूचित करें कि Type=accept साथ परिवहन प्रक्रिया ने सहकर्मी के साथ संबंध स्थापित किया है। यदि ट्रांसपोर्ट प्रक्रिया में Type=connect तो नहीं भेजा गया है।

{diameter, {self(), connected, Remote}}
{diameter, {self(), connected, Remote, [LocalAddr]}}

माता-पिता को सूचित करें कि Type=connect साथ परिवहन प्रक्रिया ने एक सहकर्मी के साथ संबंध स्थापित किया है। यदि परिवहन प्रक्रिया में Type=accept तो नहीं भेजा जाता है। Remote एक मनमाना शब्द है जो विशिष्ट रूप से दूरस्थ समापन बिंदु की पहचान करता है जिससे परिवहन जुड़ा हुआ है। एक LocalAddr सूची में एक ही शब्दार्थ है, जैसे कि एक start/3 से लौटा है।

{diameter, {recv, message() }}

एक भीतर का व्यास संदेश।

{diameter, {tls, Ref}}

एक सफल टीएलएस हैंडशेक की पावती। Ref , संदर्भ () {diameter, {tls, Ref, Type, Bool}} संदेश है जिसके जवाब में संदेश भेजा जाता है। यदि हैंडशेक सफल नहीं है तो परिवहन से बाहर निकलना चाहिए।

यह भी देखें

diameter_tcp(3) , diameter_sctp(3)