LDAP_SERVER_SORT_OID control code

The LDAP_SERVER_SORT_OID control is used with an extended LDAP search function to instruct the server to sort the search results before returning it to the client application. The control specifies the sort key and sort behavior to be used by the server.

To use this control, format the control contents using the ldap_create_sort_control function, or set the members of the LDAPControl structure as follows.

PWCHAR ldctl_oid = LDAP_SERVER_SORT_OID;
struct berval ldctl_value;
BOOLEAN ldctl_iscritical;

Members

ldctl_oid

LDAP_SERVER_SORT_OID, which is defined as "1.2.840.113556.1.4.473".

ldctl_value

Specifies a BER-encoded sequence of parameters that enables the application to specify the sort keys and matching rules, if any. In the berval structure, set bv_val to a pointer to the sequence that contains the sort key data and set bv_len to the length of the sequence. For more information, see Remarks.

ldctl_iscritical

Can be TRUE or FALSE depending on whether sorting the search results is critical to the application.

Remarks

The Sort control is used with the extended search functions, such as ldap_search_ext, to specify the key or keys used by the server to sort the search results before returning them to the client. The ldctl_value field is set to the following BER-encoded sequence.

Sequence of Sequence {
  attributeType    OCTET STRING,
  orderingRule     MatchingRuleID (optional),
  reverseOrder     BOOLEAN
}

The ber_printf function is used to create the sequence data. The sort key list sequence is in order of highest to lowest sort key precedence.

The following table lists the sequence fields.

Sequence data Description
attributeType
This is an OCTET STRING that describes the DS attribute used as a sort key, such as "Name", "PrimaryPhone", "Address", and so on. If multiple attributeType sort keys are specified, the server returns an unwillingToPerform error.
orderingRule
This specifies a matching rule that will cause the sort to be performed according to the specified rule.
reverseOrder
This BOOLEAN flag specifies that the search results are sorted in reverse order. The default value is FALSE.

The matching rules, listed in the following table, are supported. The search results will be sorted according to the specified locale.

Locale Matching rule ID Language
0x0436 (1.2.840.113556.1.4.1461) Afrikaans
0x041C (1.2.840.113556.1.4.1462) Albanian
0x0401 (1.2.840.113556.1.4.1463) Arabic:Saudi Arabia
0x0801 (1.2.840.113556.1.4.1464) Arabic:Iraq
0x0C01 (1.2.840.113556.1.4.1465) Arabic:Egypt
0x1001 (1.2.840.113556.1.4.1466) Arabic:Libya
0x1401 (1.2.840.113556.1.4.1467) Arabic:Algeria
0x1801 (1.2.840.113556.1.4.1468) Arabic:Morocco
0x1C01 (1.2.840.113556.1.4.1469) Arabic:Tunisia
0x2001 (1.2.840.113556.1.4.1470) Arabic:Oman
0x2401 (1.2.840.113556.1.4.1471) Arabic:Yemen
0x2801 (1.2.840.113556.1.4.1472) Arabic:Syria
0x2C01 (1.2.840.113556.1.4.1473) Arabic:Jordan
0x3001 (1.2.840.113556.1.4.1474) Arabic:Lebanon
0x3401 (1.2.840.113556.1.4.1475) Arabic:Kuwait
0x3801 (1.2.840.113556.1.4.1476) Arabic:UAE
0x3C01 (1.2.840.113556.1.4.1477) Arabic:Bahrain
0x4001 (1.2.840.113556.1.4.1478) Arabic:Qatar
0x042B (1.2.840.113556.1.4.1479) Armenian
0x044D (1.2.840.113556.1.4.1480) Assamese
0x042C (1.2.840.113556.1.4.1481) Azeri:Latin
0x082C (1.2.840.113556.1.4.1482) Azeri:Cyrillic
0x042D (1.2.840.113556.1.4.1483) Basque (Basque)
0x0423 (1.2.840.113556.1.4.1484) Belarussian
0x0445 (1.2.840.113556.1.4.1485) Bengali
0x0402 (1.2.840.113556.1.4.1486) Bulgarian
0x0455 (1.2.840.113556.1.4.1487) Burmese
0x0403 (1.2.840.113556.1.4.1488) Catalan
0x0404 (1.2.840.113556.1.4.1489) Chinese:Taiwan
0x0804 (1.2.840.113556.1.4.1490) Chinese:PRC
0x0C04 (1.2.840.113556.1.4.1491) Chinese:Hong Kong SAR
0x1004 (1.2.840.113556.1.4.1492) Chinese:Singapore
0x1404 (1.2.840.113556.1.4.1493) Chinese:Macau SAR
0x041A (1.2.840.113556.1.4.1494) Croatian
0x0405 (1.2.840.113556.1.4.1495) Czech
0x0406 (1.2.840.113556.1.4.1496) Danish
0x0413 (1.2.840.113556.1.4.1497) Dutch
0x0813 (1.2.840.113556.1.4.1498) Dutch:Belgium
0x0409 (1.2.840.113556.1.4.1499) English:United States
0x0809 (1.2.840.113556.1.4.1500) English:United Kingdom
0x0C09 (1.2.840.113556.1.4.1665) English:Australia
0x1009 (1.2.840.113556.1.4.1666) English:Canada
0x1409 (1.2.840.113556.1.4.1667) English:New Zealand
0x1809 (1.2.840.113556.1.4.1668) English:Ireland
0x1C09 (1.2.840.113556.1.4.1505) English:South Africa
0x2009 (1.2.840.113556.1.4.1506) English:Jamaica
0x2409 (1.2.840.113556.1.4.1507) English:Caribbean
0x2809 (1.2.840.113556.1.4.1508) English:Belize
0x2C09 (1.2.840.113556.1.4.1509) English:Trinidad
0x3009 (1.2.840.113556.1.4.1510) English:Zimbabwe
0x3409 (1.2.840.113556.1.4.1511) English:Philippines
0x0425 (1.2.840.113556.1.4.1512) Estonian
0x0438 (1.2.840.113556.1.4.1513) Faeroese
0x0429 (1.2.840.113556.1.4.1514) Persian
0x040B (1.2.840.113556.1.4.1515) Finnish
0x040C (1.2.840.113556.1.4.1516) French:France
0x080C (1.2.840.113556.1.4.1517) French:Belgium
0x0C0C (1.2.840.113556.1.4.1518) French:Canada
0x100C (1.2.840.113556.1.4.1519) French:Switzerland
0x140C (1.2.840.113556.1.4.1520) French:Luxembourg
0x180C (1.2.840.113556.1.4.1521) French:Monaco
0x0437 (1.2.840.113556.1.4.1522) Georgian
0x0407 (1.2.840.113556.1.4.1523) German:Germany
0x0807 (1.2.840.113556.1.4.1524) German:Switzerland
0x0C07 (1.2.840.113556.1.4.1525) German:Austria
0x1007 (1.2.840.113556.1.4.1526) German:Luxembourg
0x1407 (1.2.840.113556.1.4.1527) German:Liechtenstein
0x0408 (1.2.840.113556.1.4.1528) Greek
0x0447 (1.2.840.113556.1.4.1529) Gujarati
0x040D (1.2.840.113556.1.4.1530) Hebrew
0x0439 (1.2.840.113556.1.4.1531) Hindi
0x040E (1.2.840.113556.1.4.1532) Hungarian
0x040F (1.2.840.113556.1.4.1533) Icelandic
0x0421 (1.2.840.113556.1.4.1534) Indonesian
0x045E (1.2.840.113556.1.4.1535) Inukitut
0x0410 (1.2.840.113556.1.4.1536) Italian:Italy
0x0810 (1.2.840.113556.1.4.1537) Italian:Switzerland
0x0411 (1.2.840.113556.1.4.1538) Japanese
0x044B (1.2.840.113556.1.4.1539) Kannada
0x0460 (1.2.840.113556.1.4.1540) Kashmiri (Arabic)
0x0860 (1.2.840.113556.1.4.1541) Kashmiri
0x043F (1.2.840.113556.1.4.1542) Kazakh
0x0453 (1.2.840.113556.1.4.1543) Khmer
0x0440 (1.2.840.113556.1.4.1544) Kirghiz
0x0457 (1.2.840.113556.1.4.1545) Konkani
0x0412 (1.2.840.113556.1.4.1546) Korean
0x0812 (1.2.840.113556.1.4.1547) Korean:Johab
0x0426 (1.2.840.113556.1.4.1548) Latvian
0x0427 (1.2.840.113556.1.4.1549) Lithuanian
0x042F (1.2.840.113556.1.4.1550) F.Y.R.O. Macedonia
0x043E (1.2.840.113556.1.4.1551) Malaysian
0x083E (1.2.840.113556.1.4.1552) Malay Brunei Darussalam
0x044C (1.2.840.113556.1.4.1553) Malayalam
0x043A (1.2.840.113556.1.4.1554) Maltese
0x0458 (1.2.840.113556.1.4.1555) Manipuri
0x044E (1.2.840.113556.1.4.1556) Marathi
0x0461 (1.2.840.113556.1.4.1557) Nepali:Nepal
0x0414 (1.2.840.113556.1.4.1558) Norwegian:Bokmal
0x0814 (1.2.840.113556.1.4.1559) Norwegian:Nynorsk
0x0448 (1.2.840.113556.1.4.1560) Oriya
0x0415 (1.2.840.113556.1.4.1561) Polish
0x0416 (1.2.840.113556.1.4.1562) Portuguese:Brazil
0x0816 (1.2.840.113556.1.4.1563) Portuguese:Portugal
0x0446 (1.2.840.113556.1.4.1564) Punjabi
0x0418 (1.2.840.113556.1.4.1565) Romanian
0x0419 (1.2.840.113556.1.4.1566) Russian
0x044F (1.2.840.113556.1.4.1567) Sanskrit
0x0C1A (1.2.840.113556.1.4.1568) Serbian:Cyrillic
0x081A (1.2.840.113556.1.4.1569) Serbian:Latin
0x0459 (1.2.840.113556.1.4.1570) Sindhi:India
0x041B (1.2.840.113556.1.4.1571) Slovak
0x0424 (1.2.840.113556.1.4.1572) Slovenian
0x040A (1.2.840.113556.1.4.1573) Spanish:Spain(Traditional Sort)
0x080A (1.2.840.113556.1.4.1574) Spanish:Mexico
0x0C0A (1.2.840.113556.1.4.1575) Spanish:Spain(Modern Sort)
0x100A (1.2.840.113556.1.4.1576) Spanish:Guatemala
0x140A (1.2.840.113556.1.4.1577) Spanish:Costa Rica
0x180A (1.2.840.113556.1.4.1578) Spanish:Panama
0x1C0A (1.2.840.113556.1.4.1579) Spanish:Dominican Republic
0x200A (1.2.840.113556.1.4.1580) Spanish:Venezuela
0x240A (1.2.840.113556.1.4.1581) Spanish:Colombia
0x280A (1.2.840.113556.1.4.1582) Spanish:Peru
0x2C0A (1.2.840.113556.1.4.1583) Spanish:Argentina
0x300A (1.2.840.113556.1.4.1584) Spanish:Ecuador
0x340A (1.2.840.113556.1.4.1585) Spanish:Chile
0x380A (1.2.840.113556.1.4.1586) Spanish:Uruguay
0x3C0A (1.2.840.113556.1.4.1587) Spanish:Paraguay
0x400A (1.2.840.113556.1.4.1588) Spanish:Bolivia
0x440A (1.2.840.113556.1.4.1589) Spanish:El Salvador
0x480A (1.2.840.113556.1.4.1590) Spanish:Honduras
0x4C0A (1.2.840.113556.1.4.1591) Spanish:Nicaragua
0x500A (1.2.840.113556.1.4.1592) Spanish:Puerto Rico
0x0441 (1.2.840.113556.1.4.1593) Swahili:Kenya
0x041D (1.2.840.113556.1.4.1594) Swedish
0x081D (1.2.840.113556.1.4.1595) Swedish:Finland
0x0449 (1.2.840.113556.1.4.1596) Tamil
0x0444 (1.2.840.113556.1.4.1597) Tatar:Tatarstan
0x044A (1.2.840.113556.1.4.1598) Telugu
0x041E (1.2.840.113556.1.4.1599) Thai
0x041F (1.2.840.113556.1.4.1600) Turkish
0x0422 (1.2.840.113556.1.4.1601) Ukrainian
0x0420 (1.2.840.113556.1.4.1602) Urdu:Pakistan
0x0820 (1.2.840.113556.1.4.1603) Urdu:India
0x0443 (1.2.840.113556.1.4.1604) Uzbek:Latin
0x0843 (1.2.840.113556.1.4.1605) Uzbek:Cyrillic
0x042A (1.2.840.113556.1.4.1606) Vietnamese
0x0 (1.2.840.113556.1.4.1607) Japanese:XJIS
0x1 (1.2.840.113556.1.4.1608) Japanese:Unicode
0x0 (1.2.840.113556.1.4.1609) Chinese:Big5
0x0 (1.2.840.113556.1.4.1610) Chinese:PRCP
0x1 (1.2.840.113556.1.4.1611) Chinese:Unicode
0x2 (1.2.840.113556.1.4.1612) Chinese:PRC
0x3 (1.2.840.113556.1.4.1613) Chinese:BOPOMOFO
0x0 (1.2.840.113556.1.4.1614) Korean:KSC
0x1 (1.2.840.113556.1.4.1615) Korean:Unicode
0x1 (1.2.840.113556.1.4.1616) GERMAN_PHONE_BOOK
0x0 (1.2.840.113556.1.4.1617) HUNGARIAN_DEFAULT
0x1 (1.2.840.113556.1.4.1618) HUNGARIAN_TECHNICAL
0x0 (1.2.840.113556.1.4.1619) GEORGIAN_TRADITIONAL
0x1 (1.2.840.113556.1.4.1620) GEORGIAN_MODERN

Client applications should use the various API calls such as ldap_create_sort_control, ldap_search_init_page, ldap_parse_result, ldap_parse_sort_control, and so on, instead of manually creating and specifying the sort controls.

Requirements

Minimum supported client
Windows Vista
Minimum supported server
Windows Server 2008
Header
Winldap.h

See also

Data Structures

LDAPMessage

Using Controls