1 /* $NetBSD: cancel.c,v 1.2 2020/08/11 13:15:37 christos Exp $ */ 2 3 /* $OpenLDAP$ */ 4 /* This work is part of OpenLDAP Software <http://www.openldap.org/>. 5 * 6 * Copyright 1998-2020 The OpenLDAP Foundation. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted only as authorized by the OpenLDAP 11 * Public License. 12 * 13 * A copy of this license is available in the file LICENSE in the 14 * top-level directory of the distribution or, alternatively, at 15 * <http://www.OpenLDAP.org/license.html>. 16 */ 17 /* ACKNOWLEDGEMENTS: 18 * This program was originally developed by Kurt D. Zeilenga for inclusion 19 * in OpenLDAP Software. 20 */ 21 22 /* 23 * LDAPv3 Cancel Operation Request 24 */ 25 26 #include <sys/cdefs.h> 27 __RCSID("$NetBSD: cancel.c,v 1.2 2020/08/11 13:15:37 christos Exp $"); 28 29 #include "portable.h" 30 31 #include <stdio.h> 32 #include <ac/stdlib.h> 33 34 #include <ac/socket.h> 35 #include <ac/string.h> 36 #include <ac/time.h> 37 38 #include "ldap-int.h" 39 #include "ldap_log.h" 40 41 int 42 ldap_cancel( 43 LDAP *ld, 44 int cancelid, 45 LDAPControl **sctrls, 46 LDAPControl **cctrls, 47 int *msgidp ) 48 { 49 BerElement *cancelidber = NULL; 50 struct berval cancelidvalp = { 0, NULL }; 51 int rc; 52 53 cancelidber = ber_alloc_t( LBER_USE_DER ); 54 ber_printf( cancelidber, "{i}", cancelid ); 55 ber_flatten2( cancelidber, &cancelidvalp, 0 ); 56 rc = ldap_extended_operation( ld, LDAP_EXOP_CANCEL, 57 &cancelidvalp, sctrls, cctrls, msgidp ); 58 ber_free( cancelidber, 1 ); 59 return rc; 60 } 61 62 int 63 ldap_cancel_s( 64 LDAP *ld, 65 int cancelid, 66 LDAPControl **sctrls, 67 LDAPControl **cctrls ) 68 { 69 BerElement *cancelidber = NULL; 70 struct berval cancelidvalp = { 0, NULL }; 71 int rc; 72 73 cancelidber = ber_alloc_t( LBER_USE_DER ); 74 ber_printf( cancelidber, "{i}", cancelid ); 75 ber_flatten2( cancelidber, &cancelidvalp, 0 ); 76 rc = ldap_extended_operation_s( ld, LDAP_EXOP_CANCEL, 77 &cancelidvalp, sctrls, cctrls, NULL, NULL ); 78 ber_free( cancelidber, 1 ); 79 return rc; 80 } 81 82