static OSStatus DoGetLowNumberedPorts( AuthorizationRef auth, const void * userData, CFDictionaryRef request, CFMutableDictionaryRef response, aslclient asl, aslmsg aslMsg ) // Implements the kSampleLowNumberedPortsCommand. Opens three low-numbered ports // and adds them to the descriptor array in the response dictionary. { OSStatus retval = noErr; CFMutableArrayRef descArray = NULL; // Pre-conditions assert(auth != NULL); // userData may be NULL assert(request != NULL); assert(response != NULL); // asl may be NULL // aslMsg may be NULL descArray = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks); if (descArray == NULL) { retval = coreFoundationUnknownErr; } if (retval == noErr) { retval = OpenAndBindDescAndAppendToArray(130, descArray, asl, aslMsg); } if (retval == noErr) { retval = OpenAndBindDescAndAppendToArray(131, descArray, asl, aslMsg); } if (retval == noErr) { if ( CFDictionaryContainsKey(request, CFSTR(kSampleLowNumberedPortsForceFailure)) ) { retval = BASErrnoToOSStatus( EADDRINUSE ); } else { retval = OpenAndBindDescAndAppendToArray(132, descArray, asl, aslMsg); } } if (retval == noErr) { CFDictionaryAddValue(response, CFSTR(kBASDescriptorArrayKey), descArray); } // Clean up. if (retval != noErr) { BASCloseDescriptorArray(descArray); } if (descArray != NULL) { CFRelease(descArray); } return retval; }
OSStatus DoOpenSomeLowNumberedPorts(COMMAND_PROC_ARGUMENTS) { OSStatus retval = noErr; CFMutableArrayRef descArray = NULL; // Pre-conditions // userData may be NULL assert(request != NULL); assert(response != NULL); // asl may be NULL // aslMsg may be NULL descArray = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks); if (descArray == NULL) { retval = coreFoundationUnknownErr; } if (retval == noErr) { retval = OpenAndBindDescAndAppendToArray(130, descArray, asl, aslMsg); } if (retval == noErr) { retval = OpenAndBindDescAndAppendToArray(131, descArray, asl, aslMsg); } if (retval == noErr) { retval = OpenAndBindDescAndAppendToArray(132, descArray, asl, aslMsg); } if (retval == noErr) { CFDictionaryAddValue(response, CFSTR(kBASDescriptorArrayKey), descArray); } // Clean up. if (retval != noErr) { BASCloseDescriptorArray(descArray); } if (descArray != NULL) { CFRelease(descArray); } return retval; }