<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I recently had a discussion with Mark about assigning an incoming<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">request to a particular endpoint. He wrote:<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><div style="margin-left:40px">If your problem has nothing to do with outbound registrations, then
    something more like what you described would need to be devised.
    However, I would prefer that if new development were being discussed
    that such a thing be moved to the asterisk-dev mailing list. Some
    things to keep in mind here are:<br>
     * It's a bit difficult at the moment to try to match an endpoint
    based on multiple criteria with the way identification modules work.
    If one module says they recognize the endpoint, that's enough for a
    match right now.<br><br></div>Don't we specify the order of evaluation?<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">And, can't we probably override this order by using<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">the identify_by=<whatever> inside an endpoint?<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><div style="margin-left:40px">
     * Modifying res_pjsip_endpoint_identifier_ip.c to match on other
    criteria may make sense, but then what happens if someone wants to
    match based on multiple criteria based on some other "base" for
    identification (e.g. what if someone wants to make a match based on
    From header and Contact header but they don't care about the
    originating IP address) ?<br><br>
    Let me say that based on some recent developments and discussions, I
    think the methods for identifying endpoints in res_pjsip* modules
    could use improvement, but I don't think it's necessarily going to
    be an easy thing to just add to what's there. I may be wrong about
    that, but every time I start to think about it too hard, my head
    starts hurting.<br><br></div>I've been playing with res_pjsip_endpoint_identifier_ip.c,<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">and I see it as a great placeholder to hold a much more general<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">matching mechanism. <br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Observation:<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Rght now, you have a single "match" line with a list of ip's. If any of those <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">IP's match, it's a success, and you assign the endpoint specified. That's<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">an OR operation...<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Idea:<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Several different "match" types. Each type has to have at least one<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">"match" for the that match to be a success.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">All the matches have to be successful, before the endpoint<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">is considered to be selection.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Thus, it ends up being the AND of match types, and each match is an OR<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">among possibilities. It's not as general as a fancy expression with tons of<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">possible variables (a selection language with logical operators, and whatnot),<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">but it should be easy to implement and fairly useful.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">That leaves match types:<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">match   -- the current, with a list of IP's, or ip/mask or ip/cidr<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">match_<header name>_<field name>  -- a set of possible matches: regex's (with <br>no embedded commas, or some quoting mech to wrap around regex's).<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br>header names would be to, from, contact, remote-party-id, <br>and any other reasonably possible headers.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Field name would be username, host, port, and any other appropriate fields,<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">and these would be a function of the kind of header, and what might be found in it.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">match_to_username=john,.*-ann,betty,sue,z.*<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">match_from_username=fred,alice,bob,.120210112[0-9][0-9]<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">match_contact_host=<a href="http://3.3.4.0/24,somedomain.biz">3.3.4.0/24,somedomain.biz</a><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">match_remote-party-id_username=Campbell<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">and so on.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I think this new module could replace the current res_endpoint_identifier_ip module,<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">as it would provide its functionality and add a chunk more, and<br>not change existing usage or contents. <br><br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Does this sound useful to anyone?<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">murf<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br><br></div><br><div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><br>Steve Murphy<br>ParseTree Corporation<br>57 Lane 17<br>Cody, WY 82414<br>✉  murf at parsetree dot com<br>☎ 307-899-5535<br><br></div><div><b>The Beginning of the End:</b><br></div><div><a href="https://www.youtube.com/watch?v=3kEpZWGgJks" target="_blank">Civil Forfeiture: Police turn from Protectors to Predators</a><br></div><div><a href="http://2tellthewholetruth.blogspot.com/?view=classic" target="_blank">Corporate Vigilantism  & Use of Psychological Torture</a><br></div></div></div></div></div></div>
</div></div>