diff options
Diffstat (limited to 'src/stun/stun.hrl')
-rw-r--r-- | src/stun/stun.hrl | 125 |
1 files changed, 53 insertions, 72 deletions
diff --git a/src/stun/stun.hrl b/src/stun/stun.hrl index a52a4e9c4..1033be264 100644 --- a/src/stun/stun.hrl +++ b/src/stun/stun.hrl @@ -1,78 +1,59 @@ -%%%------------------------------------------------------------------- -%%% File : stun.hrl -%%% Author : Evgeniy Khramtsov <ekhramtsov@process-one.net> -%%% Description : STUN values -%%% Created : 8 Aug 2009 by Evgeniy Khramtsov <ekhramtsov@process-one.net> -%%% -%%% -%%% ejabberd, Copyright (C) 2002-2012 ProcessOne -%%% -%%% This program is free software; you can redistribute it and/or -%%% modify it under the terms of the GNU General Public License as -%%% published by the Free Software Foundation; either version 2 of the -%%% License, or (at your option) any later version. -%%% -%%% This program 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 -%%% General Public License for more details. -%%% -%%% You should have received a copy of the GNU General Public License -%%% along with this program; if not, write to the Free Software -%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -%%% 02111-1307 USA -%%% -%%%------------------------------------------------------------------- --define(STUN_MAGIC, 16#2112a442). - -%% I know, this is terrible. Refer to 'STUN Message Structure' of -%% RFC5389 to understand this. +-define(STUN_MAGIC, 554869826). + -define(STUN_METHOD(Type), - ((Type band 16#3e00) bsr 2) bor - ((Type band 16#e0) bsr 1) bor (Type band 16#f)). + Type band 15872 bsr 2 bor (Type band 224 bsr 1) bor + Type band 15). + -define(STUN_CLASS(Type), - ((Type band 16#100) bsr 7) bor - ((Type band 16#10) bsr 4)). + Type band 256 bsr 7 bor (Type band 16 bsr 4)). + -define(STUN_TYPE(C, M), - (((M band 16#f80) bsl 2) - bor ((M band 16#70) bsl 1) - bor (M band 16#f) ) - bor (((C band 16#2) bsl 7) bor ((C band 16#1) bsl 4))). - --define(is_required(A), (A =< 16#7fff)). - --define(STUN_METHOD_BINDING, 16#001). - -%% Comprehension-required range (0x0000-0x7FFF) --define(STUN_ATTR_MAPPED_ADDRESS, 16#0001). --define(STUN_ATTR_USERNAME, 16#0006). --define(STUN_ATTR_MESSAGE_INTEGRITY, 16#0008). --define(STUN_ATTR_ERROR_CODE, 16#0009). --define(STUN_ATTR_UNKNOWN_ATTRIBUTES, 16#000a). --define(STUN_ATTR_REALM, 16#0014). --define(STUN_ATTR_NONCE, 16#0015). --define(STUN_ATTR_XOR_MAPPED_ADDRESS, 16#0020). - -%% Comprehension-optional range (0x8000-0xFFFF) --define(STUN_ATTR_SOFTWARE, 16#8022). --define(STUN_ATTR_ALTERNATE_SERVER, 16#8023). --define(STUN_ATTR_FINGERPRINT, 16#8028). - --record(stun, {class, - method, - magic = ?STUN_MAGIC, - trid, - unsupported = [], - 'SOFTWARE', - 'ALTERNATE-SERVER', - 'MAPPED-ADDRESS', - 'XOR-MAPPED-ADDRESS', - 'USERNAME', - 'REALM', - 'NONCE', - 'MESSAGE-INTEGRITY', - 'ERROR-CODE', - 'UNKNOWN-ATTRIBUTES' = []}). + M band 3968 bsl 2 bor (M band 112 bsl 1) bor M band 15 + bor (C band 2 bsl 7 bor (C band 1 bsl 4))). + +-define(is_required(A), A =< 32767). + +-define(STUN_METHOD_BINDING, 1). + +-define(STUN_ATTR_MAPPED_ADDRESS, 1). + +-define(STUN_ATTR_USERNAME, 6). + +-define(STUN_ATTR_MESSAGE_INTEGRITY, 8). + +-define(STUN_ATTR_ERROR_CODE, 9). + +-define(STUN_ATTR_UNKNOWN_ATTRIBUTES, 10). + +-define(STUN_ATTR_REALM, 20). + +-define(STUN_ATTR_NONCE, 21). + +-define(STUN_ATTR_XOR_MAPPED_ADDRESS, 32). + +-define(STUN_ATTR_SOFTWARE, 32802). + +-define(STUN_ATTR_ALTERNATE_SERVER, 32803). + +-define(STUN_ATTR_FINGERPRINT, 32808). + +-record(stun, + {class = request :: request | response | error | indication, + method = ?STUN_METHOD_BINDING :: non_neg_integer(), + magic = ?STUN_MAGIC :: non_neg_integer(), + trid = 0 :: non_neg_integer() , + unsupported = [] :: [non_neg_integer()], + 'SOFTWARE', + 'ALTERNATE-SERVER', + 'MAPPED-ADDRESS', + 'XOR-MAPPED-ADDRESS', + 'USERNAME', + 'REALM', + 'NONCE', + 'MESSAGE-INTEGRITY', + 'ERROR-CODE', + 'UNKNOWN-ATTRIBUTES' = []}). %% Workarounds. %%-define(NO_PADDING, true). + |