RFC 3421 (rfc3421) - Page 3 of 8
Select and Sort Extensions for the Service Location Protocol (SLP)
Alternative Format: Original Text Document
RFC 3421 Select and Sort Extensions for SLP November 2002
3. Sort Extension
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sort Extension ID = 0x4003 | Next Extension Offset (NEO) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NEO, cont'd | length of |\
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2. Sort Extension
The format of the Sort extension is shown in Figure 2. A UA uses
this extension in a SrvRqst to request the URL entries in the
corresponding SrvRply be sorted according to the sort-key-list. The
sort-key-list is defined using Augmented Backus-Naur Form (ABNF)
[RFC 2234] as follows:
sort-key-list = sort-key / sort-key "," sort-key-list
sort-key = key-name ":" type ":" ordering [":" ref-value]
key-name = attr-tag from Section 5 of RFC 2608
type = "s" / "i"
; "s" for string type
; "i" for integer type
ordering = "+" / "-"
; "+" for increasing order
; "-" for decreasing order
ref-value = intval from Section 5 of RFC 2608
Each sort-key in the sort-key-list has a key-name, a type specifier,
an ordering specifier, and an optional reference value. The key-name
MUST be a valid attribute name, and its type is explicitly specified.
Although SLP has five attribute types (integer, string, boolean,
opaque and keyword), we only consider integer sort and string sort
since keyword attributes (they have no values) never need to be
sorted, and boolean and opaque attributes can be sorted as strings if
needed. The integer sort uses the integerOrderingMatch rule defined
in X.520 [X520], whereas the string sort is performed based on
lexical ordering. Strings are compared using the rules defined in
Section 6.4 of RFC 2608.
Only integer keys may have a reference value, causing the sort to be
based on the distance to the reference value. A reference-based
sort, such as "X:i:+:12", requires the following two steps:
Step 1. For each matching service, if its attribute X has a value of
x, then use |x-12| as its metric.
Zhao, et. al. Experimental