<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
I see a lot of confusion on the different user related ids in SIP. Let
me try to explain (and answer your question, Andy, at the end of the
post...)<br>
<br>
Let's start at the user agent(UA) side:<br>
--------------------<br>
AOR: Address of record is the <a class="moz-txt-link-abbreviated" href="mailto:sip:myuser@domain.com">sip:myuser@domain.com</a> address that you
are known as, just like your email address.&nbsp; Many user agents don't ask
for AOR, but builds it from other parameters you need to set<br>
Username: The username is normally the user (before @) of AOR)<br>
Realm: Often the domain portion of the AOR, thus AOR =
sip:username@realm<br>
Friendly name/displayname: "My name"<br>
<br>
Out of this info, the From header is constructed:<br>
From: "My name" &lt;sip:username@realm&gt;<br>
---<br>
Entirely separate (but sometimes confused in user agents):<br>
Authentication username: The user used for authentication<br>
Authentication realm: The realm to authenticate within<br>
Very often the authentication realm is implicitly assumed to be the
same as the AOR realm<br>
---<br>
Then, the user agent will create the Contact header. The Contact header
should be the public contact address of your current location. Thus:
Contact: sip:username@mypublicip:5060<br>
If the user agent is behind a NAT, the mypublicip will be a private
address.<br>
---<br>
A sidenote: Unless registration server is explicitly specified, the
realm in the AOR will be used for looking up the SIP registration
server using DNS SRV or A lookups. You should avoid putting the FQDN of
your SIP server in the realm. <br>
Also, you may in some user agents specify outbound proxy. This is the
proxy where the user agent will send INVITEs (and other outbound
messages).<br>
-------------------<br>
<br>
And on the SER side:<br>
-------------------<br>
Authentication user/realm are used to do Digest authentication, but are
then forgotten (i.e. not stored).<br>
The AOR is registered in the location table, together with the Contact
header, as well as the source ip and port (if different from Contact).
The fix_nated_register() function handles this setting of the so-called
received parameter.<br>
<br>
So, to the routing: <br>
- Messages that need to be routed (i.e. do not have Route headers) will
have a Request URI; the first line and the part after the message type:
INVITE <a class="moz-txt-link-abbreviated" href="mailto:sip:username@domain.com">sip:username@domain.com</a><br>
- It is by changing this request URI, you do routing.&nbsp; The t_relay()
command uses the URI to forward the message correctly<br>
- Before forwarding to a user agent, you want the request uri to be the
same as the stored Contact header for the AOR you are looking up. If
not, the user agent may reply with a 404 User not found<br>
- The From header is NOT used for routing, and for backwards RFC
compatibility, you should not change the From header as some UAs will
use the content of the From header to match a dialog (however, if your
UAs from experience still work, there should not be a problem doing it,
it's just not RFC-compliant and may pop up and kick your butt later ;-)<br>
- The AOR in location table is used for looking up incoming messages if
you can find a direct match between the Request-URI in the incoming
message and the stored AOR. If not, you can use the aliases table (and
lookup("aliases")) to match the Request-URI with something in the
aliases table, that again will map to the AOR in the location table<br>
---<br>
So keeping this (fairly simple) concept in focus: Routing (regardless
of LCR, avps or whatever) should focus on finding the correct
Request-URI before you call t_relay().<br>
<br>
BUT, there are ways of "messing" up this...<br>
---<br>
- There are several commands in SER you can use to override the
Request-URI (forward_*). They should be avoided, unless you have a
valid reason for having a Request-URI in the message you are forwarding
that is NOT resolvable (either IP address or DNS name or DNS SRV/A
resolvable) to the party you are forwarding to. The reason can be if
you want the R-URI to contain the AOR and then forward the message to a
server handling voicemail<br>
- The dst_uri parameter (implicitly set by lookup) will tell t_relay()
to send the message to dst_uri instead of the Request-URI. lookup()
will set this when it finds that the Contact stored for the AOR also
has an associated received ip:port (because the user agent was NATed)<br>
<br>
In general trying all sorts of tricks o fix-up things the way you need
it may not be so smart. Stick to the basics and question yourself: Is
this something I really want to do?<br>
----------------------<br>
<br>
To Andy, you want the aliases table to map to the AOR (as registered by
the UA in the REGISTER command). You do lookup("aliases") to resolve
your DID into an AOR. Then, later you can do lookup("location") to map
the AOR to the location of the UA (i.e. Contact/dst_uri). Then your
Request-URI will be correct.<br>
<br>
g-)<br>
<br>
Andy Thomas wrote:
<blockquote cite="mid000001c68d5c$d06dc400$0b0a000a@andyhome"
 type="cite">
  <meta http-equiv="Content-Type" content="text/html; ">
  <meta name="Generator" content="Microsoft Word 11 (filtered medium)">
  <style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
  </style>
  <div class="Section1">
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;">Does anyone know how I
would do this-<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;">For all users who have
PSTN access, they are assigned a
number in the MySQL alias table which matches a PSTN DDI number.<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;">e.g. user 8000 has an
alias of 2071231234, so on an incoming
call the lookup(&#8220;aliases&#8221;) function correctly matches the DDI to
the user.<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;">I want my ser.cfg to
rewrite the user on an outgoing call,
if a number exists in the alias table for that user<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;">Obviously, the
rewriteuser function will be used, but what
do I put in after that?<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;">I have tried rewriteuser
(lookup (&#8221;aliases&#8221;))&nbsp;
but that doesn&#8217;t work<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;"><o:p>&nbsp;</o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;">Can anyone help?<o:p></o:p></span></font></p>
  <p class="MsoNormal"><font face="Arial" size="2"><span
 style="font-size: 10pt; font-family: Arial;"><o:p>&nbsp;</o:p></span></font></p>
  </div>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
Serusers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Serusers@lists.iptel.org">Serusers@lists.iptel.org</a>
<a class="moz-txt-link-freetext" href="http://lists.iptel.org/mailman/listinfo/serusers">http://lists.iptel.org/mailman/listinfo/serusers</a>
  </pre>
</blockquote>
</body>
</html>