Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
EnableEOMSample.c
/* |
File: EnableIPReuseAddrSample.c |
By: Rich Kubota |
Developer Technical Support |
Purpose: Demonstrate the use of the OTOptionManagement call to tell a PAP or |
ADSP endpoint to enable/disable the EOM option. |
Note that this sample does not support asynch endpoints. To support |
an asynch endpoint, the same call to OTOptionManagement would happen |
however, the endpoint handler will be called with the |
T_OPTMGMTCOMPLETE event. The handler would then inspect the cookie, |
which will be the TOptMgmt "ret" value to check for the |
success or failure of the call. |
*/ |
#include "OpenTransport.h" // open transport files |
#include "OpenTptAppletalk.h" |
extern OSStatus DoNegotiateEOMOption(EndpointRef ep, Boolean enableEOM); |
/* |
Sample function to enable/disable the EOM option for |
ADSP. This function also demonstrates the |
use of the OTOptionManagement call. |
Unless explicitely defined by XTI, all Open Transport options |
use a kOTFourByteOptionSize buffer. |
Input |
EndpointRef ep - endpoint on which to set EOM option on |
Boolean enableEOM - true - option on, false - option off |
Return: kOTNoError indicates that the option was successfully negotiated |
OSStatus is an error if < 0, otherwise, the status field is |
returned and is > 0. |
*/ |
OSStatus DoNegotiateEOMOption(EndpointRef ep, Boolean enableEOM) |
{ |
UInt8 buf[kOTFourByteOptionSize]; // define buffer for fourByte Option size |
TOption* opt; // option ptr to make items easier to access |
TOptMgmt req; |
TOptMgmt ret; |
OSStatus err; |
if (OTIsSynchronous(ep) == false) // check whether ep sync or not |
{ |
DebugStr("\pThis routine does not support asynch endpoints"); |
return (OSStatus)-1; |
} |
opt = (TOption*)buf; // set option ptr to buffer |
req.opt.buf = buf; |
req.opt.len = sizeof(buf); |
req.flags = T_NEGOTIATE; // negotiate for EOM option |
ret.opt.buf = buf; |
ret.opt.maxlen = kOTFourByteOptionSize; |
opt->level = ATK_PAP; // dealing with PAP |
opt->name = OPT_ENABLEEOM; |
opt->len = kOTFourByteOptionSize; |
opt->status = 0; |
*(UInt32*)opt->value = enableEOM; // set the desired option level, true or false |
err = OTOptionManagement(ep, &req, &ret); |
// if no error then return the option status value |
if (err == kOTNoError) |
{ |
if (opt->status != T_SUCCESS) |
err = opt->status; |
else |
err = kOTNoError; |
} |
return err; |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-07-22