This is pppd_rpcServer.c in view mode; [Download] [Up]
/* Module pppd_rpc */ #define EXPORT_BOOLEAN #include <mach/boolean.h> #include <mach/message.h> #include <mach/mig_errors.h> #ifndef mig_internal #define mig_internal static #endif #ifndef TypeCheck #define TypeCheck 1 #endif #ifndef UseExternRCSId #ifdef hc #define UseExternRCSId 1 #endif #endif #ifndef UseStaticMsgType #if !defined(hc) || defined(__STDC__) #define UseStaticMsgType 1 #endif #endif #define novalue void #define msg_request_port msg_local_port #define msg_reply_port msg_remote_port #include <mach/std_types.h> /* Routine pppd_status */ mig_internal novalue _Xpppd_status (msg_header_t *InHeadP, msg_header_t *OutHeadP) { typedef struct { msg_header_t Head; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; msg_type_t cType; int c; } Reply; register Request *In0P = (Request *) InHeadP; register Reply *OutP = (Reply *) OutHeadP; extern kern_return_t pppd_status (port_t server, int *c); #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size; #if UseStaticMsgType static const msg_type_t cType = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0, }; #endif UseStaticMsgType #if TypeCheck msg_size = In0P->Head.msg_size; msg_simple = In0P->Head.msg_simple; if ((msg_size != 24) || (msg_simple != TRUE)) { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } #endif TypeCheck OutP->RetCode = pppd_status(In0P->Head.msg_request_port, &OutP->c); #ifdef label_punt0 #undef label_punt0 punt0: #endif label_punt0 if (OutP->RetCode != KERN_SUCCESS) return; msg_size = 40; #if UseStaticMsgType OutP->cType = cType; #else UseStaticMsgType OutP->cType.msg_type_name = MSG_TYPE_INTEGER_32; OutP->cType.msg_type_size = 32; OutP->cType.msg_type_number = 1; OutP->cType.msg_type_inline = TRUE; OutP->cType.msg_type_longform = FALSE; OutP->cType.msg_type_deallocate = FALSE; #endif UseStaticMsgType OutP->Head.msg_simple = TRUE; OutP->Head.msg_size = msg_size; } /* Routine set_pppd */ mig_internal novalue _Xset_pppd (msg_header_t *InHeadP, msg_header_t *OutHeadP) { typedef struct { msg_header_t Head; msg_type_t aType; int a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; register Request *In0P = (Request *) InHeadP; register Reply *OutP = (Reply *) OutHeadP; extern kern_return_t set_pppd (port_t server, int a); #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size; #if UseStaticMsgType static const msg_type_t aCheck = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0 }; #endif UseStaticMsgType #if TypeCheck msg_size = In0P->Head.msg_size; msg_simple = In0P->Head.msg_simple; if ((msg_size != 32) || (msg_simple != TRUE)) { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } #endif TypeCheck #if TypeCheck #if UseStaticMsgType if (* (int *) &In0P->aType != * (int *) &aCheck) #else UseStaticMsgType if ((In0P->aType.msg_type_inline != TRUE) || (In0P->aType.msg_type_longform != FALSE) || (In0P->aType.msg_type_name != MSG_TYPE_INTEGER_32) || (In0P->aType.msg_type_number != 1) || (In0P->aType.msg_type_size != 32)) #endif UseStaticMsgType { OutP->RetCode = MIG_BAD_ARGUMENTS; goto punt0; } #define label_punt0 #endif TypeCheck OutP->RetCode = set_pppd(In0P->Head.msg_request_port, In0P->a); #ifdef label_punt0 #undef label_punt0 punt0: #endif label_punt0 if (OutP->RetCode != KERN_SUCCESS) return; msg_size = 32; OutP->Head.msg_simple = TRUE; OutP->Head.msg_size = msg_size; } /* SimpleRoutine die_pppd */ mig_internal novalue _Xdie_pppd (msg_header_t *InHeadP, msg_header_t *OutHeadP) { typedef struct { msg_header_t Head; msg_type_t aType; int a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; register Request *In0P = (Request *) InHeadP; register Reply *OutP = (Reply *) OutHeadP; extern kern_return_t die_pppd (port_t server, int a); #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size; #if UseStaticMsgType static const msg_type_t aCheck = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0 }; #endif UseStaticMsgType #if TypeCheck msg_size = In0P->Head.msg_size; msg_simple = In0P->Head.msg_simple; if ((msg_size != 32) || (msg_simple != TRUE)) { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } #endif TypeCheck #if TypeCheck #if UseStaticMsgType if (* (int *) &In0P->aType != * (int *) &aCheck) #else UseStaticMsgType if ((In0P->aType.msg_type_inline != TRUE) || (In0P->aType.msg_type_longform != FALSE) || (In0P->aType.msg_type_name != MSG_TYPE_INTEGER_32) || (In0P->aType.msg_type_number != 1) || (In0P->aType.msg_type_size != 32)) #endif UseStaticMsgType { OutP->RetCode = MIG_BAD_ARGUMENTS; goto punt0; } #define label_punt0 #endif TypeCheck (void) die_pppd(In0P->Head.msg_request_port, In0P->a); OutP->RetCode = MIG_NO_REPLY; #ifdef label_punt0 #undef label_punt0 punt0: #endif label_punt0 ; } boolean_t pppd_rpc_server (msg_header_t *InHeadP, msg_header_t *OutHeadP) { register msg_header_t *InP = InHeadP; register death_pill_t *OutP = (death_pill_t *) OutHeadP; #if UseStaticMsgType static const msg_type_t RetCodeType = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0, }; #endif UseStaticMsgType OutP->Head.msg_simple = TRUE; OutP->Head.msg_size = sizeof *OutP; OutP->Head.msg_type = InP->msg_type; OutP->Head.msg_local_port = PORT_NULL; OutP->Head.msg_remote_port = InP->msg_reply_port; OutP->Head.msg_id = InP->msg_id + 100; #if UseStaticMsgType OutP->RetCodeType = RetCodeType; #else UseStaticMsgType OutP->RetCodeType.msg_type_name = MSG_TYPE_INTEGER_32; OutP->RetCodeType.msg_type_size = 32; OutP->RetCodeType.msg_type_number = 1; OutP->RetCodeType.msg_type_inline = TRUE; OutP->RetCodeType.msg_type_longform = FALSE; OutP->RetCodeType.msg_type_deallocate = FALSE; #endif UseStaticMsgType OutP->RetCode = MIG_BAD_ID; if ((InP->msg_id > 2) || (InP->msg_id < 0)) return FALSE; else { typedef novalue (*SERVER_STUB_PROC) (msg_header_t *, msg_header_t *); static const SERVER_STUB_PROC routines[] = { _Xpppd_status, _Xset_pppd, _Xdie_pppd, }; if (routines[InP->msg_id - 0]) (routines[InP->msg_id - 0]) (InP, &OutP->Head); else return FALSE; } return TRUE; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.