Subject: RE: [Sip] Caller-Preferences: Representing negated Boolean feature tags

From: [email-masked]
Date: Fri, 9 Apr 2004 09:07:41 +0200

Thank You for the answer.
Just one last question: (audio = FALSE) is equal to not including the audio tag at all?

Many thanks, BR: Viktor

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]On Behalf Of ext
Paul Kyzivat
Sent: Thursday April 08,2004 22:06
To: Bekesi Viktor (Nokia-NET/Budapest)
Cc: [email-masked]
Subject: Re: [Sip] Caller-Preferences: Representing negated Boolean
feature tags

Viktor,

Sure, it makes sense to negate boolean feature tags. More below.

	Paul

[email-masked] wrote:
> Hello,
> 
> I am implementing SIP Caller-Preferences related functionalities, and there is one thing that is not clear for me after reading the relevant drafts and rfcs: Does it make sense to negate a Boolean type feature tag? like the audio in the example:
> 
>    (& (! (audio=TRUE))
>       (video=TRUE)
>       (sip.mobility=fixed)
>       (message=TRUE)
>       (| (sip.methods=INVITE) (sip.methods=OPTIONS) (sip.methods=BYE)
>          (sip.methods=CANCEL) (sip.methods=ACK))
>       (| (sip.schemes=sip) (sip.schemes=http)))

The first thing to decide is whether you want (! (audio=TRUE)), or 
(audio=FALSE). For some purposes they are the same, for others they are 
not. The difference comes when matching against another feature 
predicate that doesn't mention audio.

> If yes, then the next question arises: How can I represent negated Boolean type feature tags in SIP header parameters? 
> According to draft-ietf-sip-callerprefs-10, 
> 
>    (& (sip.mobility=fixed)
>       (| (! (sip.events=presence)) (sip.events=winfo))
>       (| (language=en) (language=de))
>       (sip.description="PC")
>       (sip.newparam=TRUE)
>       (rangeparam=-4..5125/1000))
> 
> this declaration can be turned into this representation:
> 
>    Accept-Contact:*;mobility="fixed";events="!presence,winfo";language="en,de"
>     ;description="<PC>";+sip.newparam;+rangeparam="#-4:+5.125"
 >
> (I reversed the order as it was in the document)
> 
> Here the events are negated and that is indicated by the exclamation mark at the beginning of the event-tag-value. Boolean type tags are turned into flag parameters with no value. So then how can the very first example represented?

The suppression of the TRUE value for boolean feature tags is syntactic 
sugar, and is optional. So the following are equivalent:

	audio
	audio="TRUE"

So, you can represent (! (audio=TRUE)) as

	audio="!TRUE"

> Thanks in advance, best regards: 
> 
> Viktor Bekesi
> Nokia Networks
> +36-20 9849-202
>  
> 
> _______________________________________________
> Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
> This list is for NEW development of the core SIP Protocol
> Use [email-masked] for questions on current sip
> Use [email-masked] for new developments on the application of sip
> 

_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip

_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip

---

From: Paul Kyzivat <[email-masked]>
Date: Fri, 09 Apr 2004 16:09:35 -0400

> Just one last question: (audio = FALSE) is equal to not including the audio tag at all?

Not exactly. When matching two feature predicates, the matching 
algorithm considers it a match if one mentions a feature tag and another 
does not. This behavior is then modified by the presence of "require" 
and "explicit" parameters on Accept-Contact. You need to read in detail 
how it works.

	Paul