#endif
#ifdef LDAP_CONTROL_X_SHOW_DELETED
fprintf( stderr, _(" [!]showDeleted (MS AD Show Deleted)\n"));
+#endif
+#ifdef LDAP_CONTROL_X_SERVER_NOTIFICATION
+ fprintf( stderr, _(" [!]serverNotif (MS AD Server Notification)\n"));
#endif
fprintf( stderr, _(" [!]<oid>[=:<b64value>] (generic control; no response handling)\n"));
fprintf( stderr, _(" -f file read operations from `file'\n"));
static int showDeleted;
#endif
+#ifdef LDAP_CONTROL_X_SERVER_NOTIFICATION
+static int serverNotif;
+#endif
+
static int
ctrl_add( void )
{
}
*cookiep = '\0';
}
- num = sscanf( cvalue, "%d", &tmp );
+ num = sscanf( cvalue, "%i", &tmp );
if ( num != 1 ) {
fprintf( stderr,
_("Invalid value for dirSync, %s.\n"),
showDeleted = 1 + crit;
#endif /* LDAP_CONTROL_X_SHOW_DELETED */
+#ifdef LDAP_CONTROL_X_SERVER_NOTIFICATION
+ } else if ( strcasecmp( control, "serverNotif" ) == 0 ) {
+ int num, tmp;
+ if( serverNotif ) {
+ fprintf( stderr,
+ _("serverNotif control previously specified\n"));
+ exit( EXIT_FAILURE );
+ }
+ if ( cvalue != NULL ) {
+ fprintf( stderr,
+ _("serverNotif: no control value expected\n") );
+ usage();
+ }
+
+ serverNotif = 1 + crit;
+#endif /* LDAP_CONTROL_X_SERVER_NOTIFICATION */
+
} else if ( tool_is_oid( control ) ) {
if ( c != NULL ) {
int i;
#endif
#ifdef LDAP_CONTROL_X_SHOW_DELETED
|| showDeleted
+#endif
+#ifdef LDAP_CONTROL_X_SERVER_NOTIFICATION
+ || serverNotif
#endif
|| domainScope
|| pagedResults
c[i].ldctl_iscritical = showDeleted > 1;
i++;
}
+#endif
+#ifdef LDAP_CONTROL_X_SERVER_NOTIFICATION
+ if ( serverNotif ) {
+ if ( ctrl_add() ) {
+ tool_exit( ld, EXIT_FAILURE );
+ }
+
+ c[i].ldctl_oid = LDAP_CONTROL_X_SERVER_NOTIFICATION;
+ c[i].ldctl_value.bv_val = NULL;
+ c[i].ldctl_value.bv_len = 0;
+ c[i].ldctl_iscritical = serverNotif > 1;
+ i++;
+ }
#endif
}
#define LDAP_CONTROL_X_TREE_DELETE "1.2.840.113556.1.4.805"
/* MS Active Directory controls - not implemented in slapd(8) */
+#define LDAP_CONTROL_X_SERVER_NOTIFICATION "1.2.840.113556.1.4.528"
#define LDAP_CONTROL_X_EXTENDED_DN "1.2.840.113556.1.4.529"
#define LDAP_CONTROL_X_SHOW_DELETED "1.2.840.113556.1.4.417"
#define LDAP_CONTROL_X_DIRSYNC "1.2.840.113556.1.4.841"
LDAPControl **ctrlp ));
#endif /* LDAP_CONTROL_X_SHOW_DELETED */
+#ifdef LDAP_CONTROL_X_SERVER_NOTIFICATION
+LDAP_F( int )
+ldap_create_server_notification_control LDAP_P((
+ LDAP *ld,
+ LDAPControl **ctrlp ));
+#endif /* LDAP_CONTROL_X_SERVER_NOTIFICATION */
+
/*
* in assertion.c
*/
}
#endif /* LDAP_CONTROL_X_EXTENDED_DN */
+
+#ifdef LDAP_CONTROL_X_SERVER_NOTIFICATION
+
+int
+ldap_create_sever_notification_control( LDAP *ld,
+ LDAPControl **ctrlp )
+{
+ assert( ld != NULL );
+ assert( LDAP_VALID( ld ) );
+ assert( ctrlp != NULL );
+
+ ld->ld_errno = ldap_control_create( LDAP_CONTROL_X_SERVER_NOTIFICATION,
+ 0, NULL, 0, ctrlp );
+
+ return ld->ld_errno;
+}
+
+#endif /* LDAP_CONTROL_X_SERVER_NOTIFICATION */