mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add .x as XDR/RPCGEN (#3472)
* Add .x as XDR/RPCGEN XDR/RPC language as documented in RFC5531, RFC4506. Samples are from glibc and RFCs. * Add Logos samples https://github.com/JonasGessner/NoCarrier/blob/master/NoCarrier.x - MITcf31f4e466/llvm-gcc-R3/gcc/testsuite/objc/execute/string1.x- GPL2f6415578fa/perapp-plugin/Tweak.x- GPL3d1b3e83888/NCHax.x- Apache * Add disambiguate heuristics for .x * Add RPC to vendor/README.md
This commit is contained in:
		
				
					committed by
					
						 Colin Seymour
						Colin Seymour
					
				
			
			
				
	
			
			
			
						parent
						
							8da6ddf9d9
						
					
				
				
					commit
					60f748d47b
				
			| @@ -513,5 +513,13 @@ module Linguist | |||||||
|       end |       end | ||||||
|     end |     end | ||||||
|    |    | ||||||
|  |     disambiguate ".x" do |data| | ||||||
|  |       if /\b(program|version)\s+\w+\s*{|\bunion\s+\w+\s+switch\s*\(/.match(data) | ||||||
|  |         Language["RPC"] | ||||||
|  |       elsif /^%(end|ctor|hook|group)\b/.match(data) | ||||||
|  |         Language["Logos"] | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |  | ||||||
|   end |   end | ||||||
| end | end | ||||||
|   | |||||||
| @@ -3753,6 +3753,17 @@ RMarkdown: | |||||||
|   - ".rmd" |   - ".rmd" | ||||||
|   tm_scope: source.gfm |   tm_scope: source.gfm | ||||||
|   language_id: 313 |   language_id: 313 | ||||||
|  | RPC: | ||||||
|  |   type: programming | ||||||
|  |   aliases: | ||||||
|  |   - rpcgen | ||||||
|  |   - oncrpc | ||||||
|  |   - xdr | ||||||
|  |   ace_mode: c_cpp | ||||||
|  |   extensions: | ||||||
|  |   - ".x" | ||||||
|  |   tm_scope: source.c | ||||||
|  |   language_id: 1031374237 | ||||||
| RPM Spec: | RPM Spec: | ||||||
|   type: data |   type: data | ||||||
|   tm_scope: source.rpm-spec |   tm_scope: source.rpm-spec | ||||||
|   | |||||||
							
								
								
									
										57
									
								
								samples/Logos/NCHax.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								samples/Logos/NCHax.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | |||||||
|  | #import <UIKit/UIKit.h> | ||||||
|  | #import <BulletinBoard/BBSectionInfo.h> | ||||||
|  | #import <UIKit/UIImage+Private.h> | ||||||
|  | #import <version.h> | ||||||
|  |  | ||||||
|  | static NSString *const kHBDPWeeAppIdentifier = @"ws.hbang.dailypaperweeapp"; | ||||||
|  |  | ||||||
|  | #pragma mark - Change section header and icon | ||||||
|  |  | ||||||
|  | // courtesy of benno | ||||||
|  |  | ||||||
|  | BOOL isDailyPaper = NO; | ||||||
|  |  | ||||||
|  | %hook SBBulletinObserverViewController | ||||||
|  |  | ||||||
|  | - (void)_addSection:(BBSectionInfo *)section toCategory:(NSInteger)category widget:(id)widget { | ||||||
|  | 	if ([section.sectionID isEqualToString:kHBDPWeeAppIdentifier]) { | ||||||
|  | 		isDailyPaper = YES; | ||||||
|  | 		%orig; | ||||||
|  | 		isDailyPaper = NO; | ||||||
|  | 	} else { | ||||||
|  | 		%orig; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %hook SBBulletinListSection | ||||||
|  |  | ||||||
|  | - (void)setDisplayName:(NSString *)displayName { | ||||||
|  | 	%orig(isDailyPaper ? @"Current Wallpaper" : displayName); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (void)setIconImage:(UIImage *)iconImage { | ||||||
|  | 	%orig(isDailyPaper ? [UIImage imageNamed:@"icon" inBundle:[NSBundle bundleWithPath:@"/Library/PreferenceBundles/DailyPaper.bundle"]] : iconImage); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | #pragma mark - Enable by default | ||||||
|  |  | ||||||
|  | %hook SBNotificationCenterDataProviderController | ||||||
|  |  | ||||||
|  | - (NSArray *)_copyDefaultEnabledWidgetIDs { | ||||||
|  | 	NSArray *defaultWidgets = %orig; | ||||||
|  | 	return [[defaultWidgets arrayByAddingObject:kHBDPWeeAppIdentifier] copy]; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | #pragma mark - Constructor | ||||||
|  |  | ||||||
|  | %ctor { | ||||||
|  | 	if (!IS_IOS_OR_NEWER(iOS_8_0)) { | ||||||
|  | 		%init; | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										42
									
								
								samples/Logos/NoCarrier.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								samples/Logos/NoCarrier.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | // | ||||||
|  | //  NoCarrier.x | ||||||
|  | //  NoCarrier | ||||||
|  | // | ||||||
|  | //  Created by Jonas Gessner on 27.01.2014. | ||||||
|  | //  Copyright (c) 2014 Jonas Gessner. All rights reserved. | ||||||
|  | // | ||||||
|  |  | ||||||
|  | #import <CoreGraphics/CoreGraphics.h> | ||||||
|  |  | ||||||
|  | #include <substrate.h> | ||||||
|  |  | ||||||
|  | %group main | ||||||
|  |  | ||||||
|  | %hook UIStatusBarServiceItemView | ||||||
|  |  | ||||||
|  | - (id)_serviceContentsImage { | ||||||
|  |     return nil; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (CGFloat)extraLeftPadding { | ||||||
|  |     return 0.0f; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (CGFloat)extraRightPadding { | ||||||
|  |     return 0.0f; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (CGFloat)standardPadding { | ||||||
|  |     return 2.0f; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %end | ||||||
|  |  | ||||||
|  |  | ||||||
|  | %ctor { | ||||||
|  | 	@autoreleasepool { | ||||||
|  | 		%init(main); | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										239
									
								
								samples/Logos/Tweak.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										239
									
								
								samples/Logos/Tweak.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,239 @@ | |||||||
|  | /* | ||||||
|  |  *    ShadowSocks Per-App Proxy Plugin | ||||||
|  |  *    https://github.com/linusyang/MobileShadowSocks | ||||||
|  |  * | ||||||
|  |  *    Copyright (c) 2014 Linus Yang <laokongzi@gmail.com> | ||||||
|  |  * | ||||||
|  |  *    This program is free software: you can redistribute it and/or modify | ||||||
|  |  *    it under the terms of the GNU General Public License as published by | ||||||
|  |  *    the Free Software Foundation, either version 3 of the License, or | ||||||
|  |  *    (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  *    This program is distributed in the hope that it will be useful, | ||||||
|  |  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  *    GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  *    You should have received a copy of the GNU General Public License | ||||||
|  |  *    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include <UIKit/UIKit.h> | ||||||
|  | #include <libfinder/LFFinderController.h> | ||||||
|  |  | ||||||
|  | #define FUNC_NAME SCDynamicStoreCopyProxies | ||||||
|  | #define ORIG_FUNC original_ ## FUNC_NAME | ||||||
|  | #define CUST_FUNC custom_ ## FUNC_NAME | ||||||
|  |  | ||||||
|  | #define DECL_FUNC(ret, ...) \ | ||||||
|  |     extern ret FUNC_NAME(__VA_ARGS__); \ | ||||||
|  |     static ret (*ORIG_FUNC)(__VA_ARGS__); \ | ||||||
|  |     ret CUST_FUNC(__VA_ARGS__) | ||||||
|  |  | ||||||
|  | #define HOOK_FUNC() \ | ||||||
|  |     MSHookFunction(FUNC_NAME, (void *) CUST_FUNC, (void **) &ORIG_FUNC) | ||||||
|  |  | ||||||
|  | typedef const struct __SCDynamicStore *SCDynamicStoreRef; | ||||||
|  | void MSHookFunction(void *symbol, void *replace, void **result); | ||||||
|  |  | ||||||
|  | static BOOL proxyEnabled = YES; | ||||||
|  | static BOOL spdyDisabled = YES; | ||||||
|  | static BOOL finderEnabled = YES; | ||||||
|  |  | ||||||
|  | static BOOL getValue(NSDictionary *dict, NSString *key, BOOL defaultVal) | ||||||
|  | { | ||||||
|  |     if (dict == nil || key == nil) { | ||||||
|  |         return defaultVal; | ||||||
|  |     } | ||||||
|  |     NSNumber *valObj = [dict objectForKey:key]; | ||||||
|  |     if (valObj == nil) { | ||||||
|  |         return defaultVal; | ||||||
|  |     } | ||||||
|  |     return [valObj boolValue]; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static void updateSettings(void) | ||||||
|  | { | ||||||
|  |     proxyEnabled = YES; | ||||||
|  |     spdyDisabled = YES; | ||||||
|  |     finderEnabled = YES; | ||||||
|  |     NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.linusyang.ssperapp.plist"]; | ||||||
|  |     if (dict != nil) { | ||||||
|  |         NSString *bundleName = [[NSBundle mainBundle] bundleIdentifier]; | ||||||
|  |         if (getValue(dict, @"SSPerAppEnabled", NO) && bundleName != nil) { | ||||||
|  |             NSString *entry = [[NSString alloc] initWithFormat:@"Enabled-%@", bundleName]; | ||||||
|  |             proxyEnabled = getValue(dict, entry, NO); | ||||||
|  |             if (getValue(dict, @"SSPerAppReversed", NO)) { | ||||||
|  |                 proxyEnabled = !proxyEnabled; | ||||||
|  |             } | ||||||
|  |             [entry release]; | ||||||
|  |         } | ||||||
|  |         spdyDisabled = getValue(dict, @"SSPerAppDisableSPDY", YES); | ||||||
|  |         finderEnabled = getValue(dict, @"SSPerAppFinder", YES); | ||||||
|  |         [dict release]; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | DECL_FUNC(CFDictionaryRef, SCDynamicStoreRef store) | ||||||
|  | { | ||||||
|  |     if (proxyEnabled) { | ||||||
|  |         return ORIG_FUNC(store); | ||||||
|  |     } | ||||||
|  |     CFMutableDictionaryRef proxyDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); | ||||||
|  |     int zero = 0; | ||||||
|  |     CFNumberRef zeroNumber = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &zero); | ||||||
|  |     CFDictionarySetValue(proxyDict, CFSTR("HTTPEnable"), zeroNumber); | ||||||
|  |     CFDictionarySetValue(proxyDict, CFSTR("HTTPProxyType"), zeroNumber); | ||||||
|  |     CFDictionarySetValue(proxyDict, CFSTR("HTTPSEnable"), zeroNumber); | ||||||
|  |     CFDictionarySetValue(proxyDict, CFSTR("ProxyAutoConfigEnable"), zeroNumber); | ||||||
|  |     CFRelease(zeroNumber); | ||||||
|  |     return proxyDict; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @interface SettingTableViewController <LFFinderActionDelegate> | ||||||
|  |  | ||||||
|  | - (BOOL)useLibFinder; | ||||||
|  | - (UIViewController *)allocFinderController; | ||||||
|  | - (void)finderSelectedFilePath:(NSString *)path checkSanity:(BOOL)check; | ||||||
|  |  | ||||||
|  | @end | ||||||
|  |  | ||||||
|  | %group FinderHook | ||||||
|  |  | ||||||
|  | %hook SettingTableViewController | ||||||
|  | - (BOOL)useLibFinder | ||||||
|  | { | ||||||
|  |     return finderEnabled; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (UIViewController *)allocFinderController | ||||||
|  | { | ||||||
|  |     LFFinderController* finder = [[LFFinderController alloc] initWithMode:LFFinderModeDefault]; | ||||||
|  |     finder.actionDelegate = self; | ||||||
|  |     return finder; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | %new | ||||||
|  | -(void)finder:(LFFinderController*)finder didSelectItemAtPath:(NSString*)path | ||||||
|  | { | ||||||
|  |     [self finderSelectedFilePath:path checkSanity:NO]; | ||||||
|  | } | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %group TwitterHook | ||||||
|  |  | ||||||
|  | %hook T1SPDYConfigurationChangeListener  | ||||||
|  | - (BOOL)_shouldEnableSPDY | ||||||
|  | { | ||||||
|  |     if (spdyDisabled) { | ||||||
|  |         return NO; | ||||||
|  |     } else { | ||||||
|  |         return %orig; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %group FacebookHook | ||||||
|  |  | ||||||
|  | %hook FBRequester | ||||||
|  | - (BOOL)allowSPDY | ||||||
|  | { | ||||||
|  |     if (spdyDisabled) { | ||||||
|  |         return NO; | ||||||
|  |     } else { | ||||||
|  |         return %orig; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (BOOL)useDNSCache | ||||||
|  | { | ||||||
|  |     if (spdyDisabled) { | ||||||
|  |         return NO; | ||||||
|  |     } else { | ||||||
|  |         return %orig; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %hook FBNetworkerRequest | ||||||
|  | - (BOOL)disableSPDY | ||||||
|  | { | ||||||
|  |     if (spdyDisabled) { | ||||||
|  |         return YES; | ||||||
|  |     } else { | ||||||
|  |         return %orig; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %hook FBRequesterState | ||||||
|  | - (BOOL)didUseSPDY | ||||||
|  | { | ||||||
|  |     if (spdyDisabled) { | ||||||
|  |         return NO; | ||||||
|  |     } else { | ||||||
|  |         return %orig; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %hook FBAppConfigService | ||||||
|  | - (BOOL)disableDNSCache | ||||||
|  | { | ||||||
|  |     if (spdyDisabled) { | ||||||
|  |         return YES; | ||||||
|  |     } else { | ||||||
|  |         return %orig; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %hook FBNetworker | ||||||
|  | - (BOOL)_shouldAllowUseOfDNSCache:(id)arg | ||||||
|  | { | ||||||
|  |     if (spdyDisabled) { | ||||||
|  |         return NO; | ||||||
|  |     } else { | ||||||
|  |         return %orig; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %hook FBAppSessionController | ||||||
|  | - (BOOL)networkerShouldAllowUseOfDNSCache:(id)arg | ||||||
|  | { | ||||||
|  |     if (spdyDisabled) { | ||||||
|  |         return NO; | ||||||
|  |     } else { | ||||||
|  |         return %orig; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %end | ||||||
|  |  | ||||||
|  | %ctor | ||||||
|  | { | ||||||
|  |     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | ||||||
|  |     NSString *bundleName = [[NSBundle mainBundle] bundleIdentifier]; | ||||||
|  |     if (bundleName != nil && ![bundleName isEqualToString:@"com.apple.springboard"]) { | ||||||
|  |         updateSettings(); | ||||||
|  |         CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback) updateSettings, CFSTR("com.linusyang.ssperapp.settingschanged"), NULL, CFNotificationSuspensionBehaviorCoalesce); | ||||||
|  |         if ([bundleName isEqualToString:@"com.linusyang.MobileShadowSocks"]) { | ||||||
|  |             %init(FinderHook); | ||||||
|  |         } else { | ||||||
|  |             HOOK_FUNC(); | ||||||
|  |             if ([bundleName isEqualToString:@"com.atebits.Tweetie2"]) { | ||||||
|  |                 %init(TwitterHook); | ||||||
|  |             } else if ([bundleName isEqualToString:@"com.facebook.Facebook"]) { | ||||||
|  |                 %init(FacebookHook); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     [pool drain]; | ||||||
|  | } | ||||||
							
								
								
									
										5
									
								
								samples/Logos/string1.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								samples/Logos/string1.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | # APPLE LOCAL file string workaround 4943900 | ||||||
|  | if { [istarget "*-*-darwin\[9123\]*"] } { | ||||||
|  |   set additional_flags "-framework Foundation -fconstant-cfstrings" | ||||||
|  | } | ||||||
|  | return 0 | ||||||
							
								
								
									
										146
									
								
								samples/RPC/rpc.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								samples/RPC/rpc.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | |||||||
|  | /* rpc.x extracted from RFC5531 */ | ||||||
|  |  | ||||||
|  | const RPC_VERS = 2; | ||||||
|  |  | ||||||
|  | enum auth_flavor { | ||||||
|  | 	AUTH_NONE       = 0, | ||||||
|  | 	AUTH_SYS        = 1, | ||||||
|  | 	AUTH_SHORT      = 2, | ||||||
|  | 	AUTH_DH         = 3, | ||||||
|  | 	AUTH_KERB       = 4, /* RFC2695 */ | ||||||
|  | 	AUTH_RSA        = 5, | ||||||
|  | 	RPCSEC_GSS      = 6  /* RFC2203 */ | ||||||
|  | 	/* and more to be defined */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | typedef opaque opaque_auth_body<400>; | ||||||
|  |  | ||||||
|  | struct opaque_auth { | ||||||
|  | 	int flavor; /* may be "pseudo" value outside enum */ | ||||||
|  | 	opaque_auth_body body; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | enum msg_type { | ||||||
|  | 	CALL  = 0, | ||||||
|  | 	REPLY = 1 | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | enum reply_stat { | ||||||
|  | 	MSG_ACCEPTED = 0, | ||||||
|  | 	MSG_DENIED   = 1 | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | enum accept_stat { | ||||||
|  | 	SUCCESS       = 0, /* RPC executed successfully       */ | ||||||
|  | 	PROG_UNAVAIL  = 1, /* remote hasn't exported program  */ | ||||||
|  | 	PROG_MISMATCH = 2, /* remote can't support version #  */ | ||||||
|  | 	PROC_UNAVAIL  = 3, /* program can't support procedure */ | ||||||
|  | 	GARBAGE_ARGS  = 4, /* procedure can't decode params   */ | ||||||
|  | 	SYSTEM_ERR    = 5  /* e.g. memory allocation failure  */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | enum reject_stat { | ||||||
|  | 	RPC_MISMATCH = 0, /* RPC version number != 2          */ | ||||||
|  | 	AUTH_ERROR = 1    /* remote can't authenticate caller */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | enum auth_stat { | ||||||
|  | 	AUTH_OK           = 0,  /* success                        */ | ||||||
|  | 	/* | ||||||
|  | 	 * failed at remote end | ||||||
|  | 	 */ | ||||||
|  | 	AUTH_BADCRED      = 1,  /* bad credential (seal broken)   */ | ||||||
|  | 	AUTH_REJECTEDCRED = 2,  /* client must begin new session  */ | ||||||
|  | 	AUTH_BADVERF      = 3,  /* bad verifier (seal broken)     */ | ||||||
|  | 	AUTH_REJECTEDVERF = 4,  /* verifier expired or replayed   */ | ||||||
|  | 	AUTH_TOOWEAK      = 5,  /* rejected for security reasons  */ | ||||||
|  | 	/* | ||||||
|  | 	 * failed locally | ||||||
|  | 	 */ | ||||||
|  | 	AUTH_INVALIDRESP  = 6,  /* bogus response verifier        */ | ||||||
|  | 	AUTH_FAILED       = 7,  /* reason unknown                 */ | ||||||
|  | 	/* | ||||||
|  | 	 * AUTH_KERB errors; deprecated.  See [[139]RFC2695] | ||||||
|  | 	 */ | ||||||
|  | 	AUTH_KERB_GENERIC = 8,  /* kerberos generic error */ | ||||||
|  | 	AUTH_TIMEEXPIRE = 9,    /* time of credential expired */ | ||||||
|  | 	AUTH_TKT_FILE = 10,     /* problem with ticket file */ | ||||||
|  | 	AUTH_DECODE = 11,       /* can't decode authenticator */ | ||||||
|  | 	AUTH_NET_ADDR = 12,     /* wrong net address in ticket */ | ||||||
|  | 	/* | ||||||
|  | 	 * RPCSEC_GSS GSS related errors | ||||||
|  | 	 */ | ||||||
|  | 	RPCSEC_GSS_CREDPROBLEM = 13, /* no credentials for user */ | ||||||
|  | 	RPCSEC_GSS_CTXPROBLEM = 14   /* problem with context */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct rpc_msg { | ||||||
|  | 	unsigned int xid; | ||||||
|  | 	union rpc_msg_body body; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | union rpc_msg_body switch (msg_type mtype) { | ||||||
|  | 	case CALL: | ||||||
|  | 		call_body cbody; | ||||||
|  | 	case REPLY: | ||||||
|  | 		reply_body rbody; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct call_body { | ||||||
|  | 	unsigned int rpcvers;       /* must be equal to two (2) */ | ||||||
|  | 	unsigned int prog; | ||||||
|  | 	unsigned int vers; | ||||||
|  | 	unsigned int proc; | ||||||
|  | 	opaque_auth cred; | ||||||
|  | 	opaque_auth verf; | ||||||
|  | 	/* procedure-specific parameters start here */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | union reply_body switch (reply_stat stat) { | ||||||
|  | 	case MSG_ACCEPTED: | ||||||
|  | 		accepted_reply areply; | ||||||
|  | 	case MSG_DENIED: | ||||||
|  | 		rejected_reply rreply; | ||||||
|  | } /*reply*/; | ||||||
|  |  | ||||||
|  | struct accepted_reply { | ||||||
|  | 	opaque_auth verf; | ||||||
|  | 	union accepted_reply_data reply_data; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | union accepted_reply_data switch (accept_stat stat) { | ||||||
|  | 	case SUCCESS: | ||||||
|  | 		void /* opaque results[0] */; | ||||||
|  | 		/* | ||||||
|  | 		 * procedure-specific results start here | ||||||
|  | 		 */ | ||||||
|  | 	case PROG_MISMATCH: | ||||||
|  | 		struct { | ||||||
|  | 			unsigned int low; | ||||||
|  | 			unsigned int high; | ||||||
|  | 		} mismatch_info; | ||||||
|  | 	default: | ||||||
|  | 		/* | ||||||
|  | 		 * Void.  Cases include PROG_UNAVAIL, PROC_UNAVAIL, | ||||||
|  | 		 * GARBAGE_ARGS, and SYSTEM_ERR. | ||||||
|  | 		 */ | ||||||
|  | 		void; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | union rejected_reply switch (reject_stat stat) { | ||||||
|  | 	case RPC_MISMATCH: | ||||||
|  | 		struct { | ||||||
|  | 			unsigned int low; | ||||||
|  | 			unsigned int high; | ||||||
|  | 		} mismatch_info; | ||||||
|  | 	case AUTH_ERROR: | ||||||
|  | 		auth_stat auth_stat; /* renamed to avoid conflict with discriminator */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct authsys_parms { | ||||||
|  | 	unsigned int stamp; | ||||||
|  | 	string machinename<255>; | ||||||
|  | 	unsigned int uid; | ||||||
|  | 	unsigned int gid; | ||||||
|  | 	unsigned int gids<16>; | ||||||
|  | }; | ||||||
							
								
								
									
										228
									
								
								samples/RPC/rusers.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										228
									
								
								samples/RPC/rusers.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,228 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2010, Oracle America, Inc. | ||||||
|  |  * Redistribution and use in source and binary forms, with or without | ||||||
|  |  * modification, are permitted provided that the following conditions are | ||||||
|  |  * met: | ||||||
|  |  * | ||||||
|  |  *     * Redistributions of source code must retain the above copyright | ||||||
|  |  *       notice, this list of conditions and the following disclaimer. | ||||||
|  |  *     * Redistributions in binary form must reproduce the above | ||||||
|  |  *       copyright notice, this list of conditions and the following | ||||||
|  |  *       disclaimer in the documentation and/or other materials | ||||||
|  |  *       provided with the distribution. | ||||||
|  |  *     * Neither the name of the "Oracle America, Inc." nor the names of its | ||||||
|  |  *       contributors may be used to endorse or promote products derived | ||||||
|  |  *       from this software without specific prior written permission. | ||||||
|  |  * | ||||||
|  |  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||||
|  |  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||||
|  |  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||||||
|  |  *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||||||
|  |  *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||||
|  |  *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  |  *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | ||||||
|  |  *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||||||
|  |  *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||||
|  |  *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||||||
|  |  *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||||
|  |  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  |  */ | ||||||
|  | %/* | ||||||
|  | % * Find out about remote users | ||||||
|  | % */ | ||||||
|  |  | ||||||
|  | const RUSERS_MAXUSERLEN = 32; | ||||||
|  | const RUSERS_MAXLINELEN = 32; | ||||||
|  | const RUSERS_MAXHOSTLEN = 257; | ||||||
|  |  | ||||||
|  | struct rusers_utmp { | ||||||
|  | 	string ut_user<RUSERS_MAXUSERLEN>;	/* aka ut_name */ | ||||||
|  | 	string ut_line<RUSERS_MAXLINELEN>;	/* device */ | ||||||
|  | 	string ut_host<RUSERS_MAXHOSTLEN>;	/* host user logged on from */ | ||||||
|  | 	int ut_type;				/* type of entry */ | ||||||
|  | 	int ut_time;				/* time entry was made */ | ||||||
|  | 	unsigned int ut_idle;			/* minutes idle */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | typedef rusers_utmp utmp_array<>; | ||||||
|  |  | ||||||
|  | #ifdef RPC_HDR | ||||||
|  | % | ||||||
|  | %/* | ||||||
|  | % * Values for ut_type field above. | ||||||
|  | % */ | ||||||
|  | #endif | ||||||
|  | const	RUSERS_EMPTY = 0; | ||||||
|  | const	RUSERS_RUN_LVL = 1; | ||||||
|  | const	RUSERS_BOOT_TIME = 2; | ||||||
|  | const	RUSERS_OLD_TIME = 3; | ||||||
|  | const	RUSERS_NEW_TIME = 4; | ||||||
|  | const	RUSERS_INIT_PROCESS = 5; | ||||||
|  | const	RUSERS_LOGIN_PROCESS = 6; | ||||||
|  | const	RUSERS_USER_PROCESS = 7; | ||||||
|  | const	RUSERS_DEAD_PROCESS = 8; | ||||||
|  | const	RUSERS_ACCOUNTING = 9; | ||||||
|  |  | ||||||
|  | program RUSERSPROG { | ||||||
|  |  | ||||||
|  | 	version RUSERSVERS_3 { | ||||||
|  | 		int | ||||||
|  | 		RUSERSPROC_NUM(void) = 1; | ||||||
|  |  | ||||||
|  | 		utmp_array | ||||||
|  | 		RUSERSPROC_NAMES(void) = 2; | ||||||
|  |  | ||||||
|  | 		utmp_array | ||||||
|  | 		RUSERSPROC_ALLNAMES(void) = 3; | ||||||
|  | 	} = 3; | ||||||
|  |  | ||||||
|  | } = 100002; | ||||||
|  |  | ||||||
|  | #ifdef RPC_HDR | ||||||
|  | % | ||||||
|  | % | ||||||
|  | %#ifdef	__cplusplus | ||||||
|  | %extern "C" { | ||||||
|  | %#endif | ||||||
|  | % | ||||||
|  | %#include <rpc/xdr.h> | ||||||
|  | % | ||||||
|  | %/* | ||||||
|  | % * The following structures are used by version 2 of the rusersd protocol. | ||||||
|  | % * They were not developed with rpcgen, so they do not appear as RPCL. | ||||||
|  | % */ | ||||||
|  | % | ||||||
|  | %#define	RUSERSVERS_IDLE 2 | ||||||
|  | %#define	RUSERSVERS 3		/* current version */ | ||||||
|  | %#define	MAXUSERS 100 | ||||||
|  | % | ||||||
|  | %/* | ||||||
|  | % * This is the structure used in version 2 of the rusersd RPC service. | ||||||
|  | % * It corresponds to the utmp structure for BSD systems. | ||||||
|  | % */ | ||||||
|  | %struct ru_utmp { | ||||||
|  | %	char	ut_line[8];		/* tty name */ | ||||||
|  | %	char	ut_name[8];		/* user id */ | ||||||
|  | %	char	ut_host[16];		/* host name, if remote */ | ||||||
|  | %	long int ut_time;		/* time on */ | ||||||
|  | %}; | ||||||
|  | % | ||||||
|  | %struct utmparr { | ||||||
|  | %       struct ru_utmp **uta_arr; | ||||||
|  | %       int uta_cnt; | ||||||
|  | %}; | ||||||
|  | %typedef struct utmparr utmparr; | ||||||
|  | % | ||||||
|  | %extern bool_t xdr_utmparr (XDR *xdrs, struct utmparr *objp) __THROW; | ||||||
|  | % | ||||||
|  | %struct utmpidle { | ||||||
|  | %	struct ru_utmp ui_utmp; | ||||||
|  | %	unsigned int ui_idle; | ||||||
|  | %}; | ||||||
|  | % | ||||||
|  | %struct utmpidlearr { | ||||||
|  | %	struct utmpidle **uia_arr; | ||||||
|  | %	int uia_cnt; | ||||||
|  | %}; | ||||||
|  | % | ||||||
|  | %extern bool_t xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp) __THROW; | ||||||
|  | % | ||||||
|  | %#ifdef	__cplusplus | ||||||
|  | %} | ||||||
|  | %#endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifdef	RPC_XDR | ||||||
|  | %bool_t xdr_utmp (XDR *xdrs, struct ru_utmp *objp); | ||||||
|  | % | ||||||
|  | %bool_t | ||||||
|  | %xdr_utmp (XDR *xdrs, struct ru_utmp *objp) | ||||||
|  | %{ | ||||||
|  | %	/* Since the fields are char foo [xxx], we should not free them. */ | ||||||
|  | %	if (xdrs->x_op != XDR_FREE) | ||||||
|  | %	{ | ||||||
|  | %		char *ptr; | ||||||
|  | %		unsigned int size; | ||||||
|  | %		ptr = objp->ut_line; | ||||||
|  | %		size = sizeof (objp->ut_line); | ||||||
|  | %		if (!xdr_bytes (xdrs, &ptr, &size, size)) { | ||||||
|  | %			return (FALSE); | ||||||
|  | %		} | ||||||
|  | %		ptr = objp->ut_name; | ||||||
|  | %		size = sizeof (objp->ut_name); | ||||||
|  | %		if (!xdr_bytes (xdrs, &ptr, &size, size)) { | ||||||
|  | %			return (FALSE); | ||||||
|  | %		} | ||||||
|  | %		ptr = objp->ut_host; | ||||||
|  | %		size = sizeof (objp->ut_host); | ||||||
|  | %		if (!xdr_bytes (xdrs, &ptr, &size, size)) { | ||||||
|  | %			return (FALSE); | ||||||
|  | %		} | ||||||
|  | %	} | ||||||
|  | %	if (!xdr_long(xdrs, &objp->ut_time)) { | ||||||
|  | %		return (FALSE); | ||||||
|  | %	} | ||||||
|  | %	return (TRUE); | ||||||
|  | %} | ||||||
|  | % | ||||||
|  | %bool_t xdr_utmpptr(XDR *xdrs, struct ru_utmp **objpp); | ||||||
|  | % | ||||||
|  | %bool_t | ||||||
|  | %xdr_utmpptr (XDR *xdrs, struct ru_utmp **objpp) | ||||||
|  | %{ | ||||||
|  | %	if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp), | ||||||
|  | %			   (xdrproc_t) xdr_utmp)) { | ||||||
|  | %		return (FALSE); | ||||||
|  | %	} | ||||||
|  | %	return (TRUE); | ||||||
|  | %} | ||||||
|  | % | ||||||
|  | %bool_t | ||||||
|  | %xdr_utmparr (XDR *xdrs, struct utmparr *objp) | ||||||
|  | %{ | ||||||
|  | %	if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt, | ||||||
|  | %		       MAXUSERS, sizeof(struct ru_utmp *), | ||||||
|  | %		       (xdrproc_t) xdr_utmpptr)) { | ||||||
|  | %		return (FALSE); | ||||||
|  | %	} | ||||||
|  | %	return (TRUE); | ||||||
|  | %} | ||||||
|  | % | ||||||
|  | %bool_t xdr_utmpidle(XDR *xdrs, struct utmpidle *objp); | ||||||
|  | % | ||||||
|  | %bool_t | ||||||
|  | %xdr_utmpidle (XDR *xdrs, struct utmpidle *objp) | ||||||
|  | %{ | ||||||
|  | %	if (!xdr_utmp(xdrs, &objp->ui_utmp)) { | ||||||
|  | %		return (FALSE); | ||||||
|  | %	} | ||||||
|  | %	if (!xdr_u_int(xdrs, &objp->ui_idle)) { | ||||||
|  | %		return (FALSE); | ||||||
|  | %	} | ||||||
|  | %	return (TRUE); | ||||||
|  | %} | ||||||
|  | % | ||||||
|  | %bool_t xdr_utmpidleptr(XDR *xdrs, struct utmpidle **objp); | ||||||
|  | % | ||||||
|  | %bool_t | ||||||
|  | %xdr_utmpidleptr (XDR *xdrs, struct utmpidle **objpp) | ||||||
|  | %{ | ||||||
|  | %	if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle), | ||||||
|  | %			   (xdrproc_t) xdr_utmpidle)) { | ||||||
|  | %		return (FALSE); | ||||||
|  | %	} | ||||||
|  | %	return (TRUE); | ||||||
|  | %} | ||||||
|  | % | ||||||
|  | %bool_t | ||||||
|  | %xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp) | ||||||
|  | %{ | ||||||
|  | %	if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt, | ||||||
|  | %		       MAXUSERS, sizeof(struct utmpidle *), | ||||||
|  | %		       (xdrproc_t) xdr_utmpidleptr)) { | ||||||
|  | %		return (FALSE); | ||||||
|  | %	} | ||||||
|  | %	return (TRUE); | ||||||
|  | %} | ||||||
|  | #endif | ||||||
							
								
								
									
										311
									
								
								samples/RPC/yp.x
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										311
									
								
								samples/RPC/yp.x
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,311 @@ | |||||||
|  | /* @(#)yp.x	2.1 88/08/01 4.0 RPCSRC */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2010, Oracle America, Inc. | ||||||
|  |  * | ||||||
|  |  * Redistribution and use in source and binary forms, with or without | ||||||
|  |  * modification, are permitted provided that the following conditions are | ||||||
|  |  * met: | ||||||
|  |  * | ||||||
|  |  *     * Redistributions of source code must retain the above copyright | ||||||
|  |  *       notice, this list of conditions and the following disclaimer. | ||||||
|  |  *     * Redistributions in binary form must reproduce the above | ||||||
|  |  *       copyright notice, this list of conditions and the following | ||||||
|  |  *       disclaimer in the documentation and/or other materials | ||||||
|  |  *       provided with the distribution. | ||||||
|  |  *     * Neither the name of the "Oracle America, Inc." nor the names of its | ||||||
|  |  *       contributors may be used to endorse or promote products derived | ||||||
|  |  *       from this software without specific prior written permission. | ||||||
|  |  * | ||||||
|  |  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||||
|  |  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||||
|  |  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||||||
|  |  *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||||||
|  |  *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||||
|  |  *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  |  *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | ||||||
|  |  *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||||||
|  |  *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||||
|  |  *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||||||
|  |  *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||||
|  |  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Protocol description file for the Yellow Pages Service | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | const YPMAXRECORD = 1024; | ||||||
|  | const YPMAXDOMAIN = 64; | ||||||
|  | const YPMAXMAP = 64; | ||||||
|  | const YPMAXPEER = 64; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | enum ypstat { | ||||||
|  | 	YP_TRUE		=  1, | ||||||
|  | 	YP_NOMORE	=  2, | ||||||
|  | 	YP_FALSE	=  0, | ||||||
|  | 	YP_NOMAP	= -1, | ||||||
|  | 	YP_NODOM	= -2, | ||||||
|  | 	YP_NOKEY	= -3, | ||||||
|  | 	YP_BADOP	= -4, | ||||||
|  | 	YP_BADDB	= -5, | ||||||
|  | 	YP_YPERR	= -6, | ||||||
|  | 	YP_BADARGS	= -7, | ||||||
|  | 	YP_VERS		= -8 | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | enum ypxfrstat { | ||||||
|  | 	YPXFR_SUCC	=  1, | ||||||
|  | 	YPXFR_AGE	=  2, | ||||||
|  | 	YPXFR_NOMAP	= -1, | ||||||
|  | 	YPXFR_NODOM	= -2, | ||||||
|  | 	YPXFR_RSRC	= -3, | ||||||
|  | 	YPXFR_RPC	= -4, | ||||||
|  | 	YPXFR_MADDR	= -5, | ||||||
|  | 	YPXFR_YPERR	= -6, | ||||||
|  | 	YPXFR_BADARGS	= -7, | ||||||
|  | 	YPXFR_DBM	= -8, | ||||||
|  | 	YPXFR_FILE	= -9, | ||||||
|  | 	YPXFR_SKEW	= -10, | ||||||
|  | 	YPXFR_CLEAR	= -11, | ||||||
|  | 	YPXFR_FORCE	= -12, | ||||||
|  | 	YPXFR_XFRERR	= -13, | ||||||
|  | 	YPXFR_REFUSED	= -14 | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | typedef string domainname<YPMAXDOMAIN>; | ||||||
|  | typedef string mapname<YPMAXMAP>; | ||||||
|  | typedef string peername<YPMAXPEER>; | ||||||
|  | typedef opaque keydat<YPMAXRECORD>; | ||||||
|  | typedef opaque valdat<YPMAXRECORD>; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | struct ypmap_parms { | ||||||
|  | 	domainname domain; | ||||||
|  | 	mapname map; | ||||||
|  | 	unsigned int ordernum; | ||||||
|  | 	peername peer; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypreq_key { | ||||||
|  | 	domainname domain; | ||||||
|  | 	mapname map; | ||||||
|  | 	keydat key; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypreq_nokey { | ||||||
|  | 	domainname domain; | ||||||
|  | 	mapname map; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypreq_xfr { | ||||||
|  | 	ypmap_parms map_parms; | ||||||
|  | 	unsigned int transid; | ||||||
|  | 	unsigned int prog; | ||||||
|  | 	unsigned int port; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | struct ypresp_val { | ||||||
|  | 	ypstat stat; | ||||||
|  | 	valdat val; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypresp_key_val { | ||||||
|  | 	ypstat stat; | ||||||
|  | #ifdef STUPID_SUN_BUG | ||||||
|  | 	/* This is the form as distributed by Sun.  But even the Sun NIS | ||||||
|  | 	   servers expect the values in the other order.  So their | ||||||
|  | 	   implementation somehow must change the order internally.  We | ||||||
|  | 	   don't want to follow this bad example since the user should be | ||||||
|  | 	   able to use rpcgen on this file.  */ | ||||||
|  | 	keydat key; | ||||||
|  | 	valdat val; | ||||||
|  | #else | ||||||
|  | 	valdat val; | ||||||
|  | 	keydat key; | ||||||
|  | #endif | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | struct ypresp_master { | ||||||
|  | 	ypstat stat; | ||||||
|  | 	peername peer; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypresp_order { | ||||||
|  | 	ypstat stat; | ||||||
|  | 	unsigned int ordernum; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | union ypresp_all switch (bool more) { | ||||||
|  | case TRUE: | ||||||
|  | 	ypresp_key_val val; | ||||||
|  | case FALSE: | ||||||
|  | 	void; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypresp_xfr { | ||||||
|  | 	unsigned int transid; | ||||||
|  | 	ypxfrstat xfrstat; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypmaplist { | ||||||
|  | 	mapname map; | ||||||
|  | 	ypmaplist *next; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypresp_maplist { | ||||||
|  | 	ypstat stat; | ||||||
|  | 	ypmaplist *maps; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | enum yppush_status { | ||||||
|  | 	YPPUSH_SUCC	=  1,	/* Success */ | ||||||
|  | 	YPPUSH_AGE	=  2,	/* Master's version not newer */ | ||||||
|  | 	YPPUSH_NOMAP	= -1,	/* Can't find server for map */ | ||||||
|  | 	YPPUSH_NODOM	= -2,	/* Domain not supported */ | ||||||
|  | 	YPPUSH_RSRC	= -3,	/* Local resource alloc failure */ | ||||||
|  | 	YPPUSH_RPC	= -4,	/* RPC failure talking to server */ | ||||||
|  | 	YPPUSH_MADDR	= -5,	/* Can't get master address */ | ||||||
|  | 	YPPUSH_YPERR	= -6,	/* YP server/map db error */ | ||||||
|  | 	YPPUSH_BADARGS	= -7,	/* Request arguments bad */ | ||||||
|  | 	YPPUSH_DBM	= -8,	/* Local dbm operation failed */ | ||||||
|  | 	YPPUSH_FILE	= -9,	/* Local file I/O operation failed */ | ||||||
|  | 	YPPUSH_SKEW	= -10,	/* Map version skew during transfer */ | ||||||
|  | 	YPPUSH_CLEAR	= -11,	/* Can't send "Clear" req to local ypserv */ | ||||||
|  | 	YPPUSH_FORCE	= -12,	/* No local order number in map  use -f flag. */ | ||||||
|  | 	YPPUSH_XFRERR	= -13,	/* ypxfr error */ | ||||||
|  | 	YPPUSH_REFUSED	= -14	/* Transfer request refused by ypserv */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct yppushresp_xfr { | ||||||
|  | 	unsigned transid; | ||||||
|  | 	yppush_status status; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Response structure and overall result status codes.  Success and failure | ||||||
|  |  * represent two separate response message types. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | enum ypbind_resptype { | ||||||
|  | 	YPBIND_SUCC_VAL = 1, | ||||||
|  | 	YPBIND_FAIL_VAL = 2 | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct ypbind_binding { | ||||||
|  |     opaque ypbind_binding_addr[4]; /* In network order */ | ||||||
|  |     opaque ypbind_binding_port[2]; /* In network order */ | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | union ypbind_resp switch (ypbind_resptype ypbind_status) { | ||||||
|  | case YPBIND_FAIL_VAL: | ||||||
|  | 	unsigned ypbind_error; | ||||||
|  | case YPBIND_SUCC_VAL: | ||||||
|  | 	ypbind_binding ypbind_bindinfo; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* Detailed failure reason codes for response field ypbind_error*/ | ||||||
|  |  | ||||||
|  | const YPBIND_ERR_ERR    = 1;	/* Internal error */ | ||||||
|  | const YPBIND_ERR_NOSERV = 2;	/* No bound server for passed domain */ | ||||||
|  | const YPBIND_ERR_RESC   = 3;	/* System resource allocation failure */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Request data structure for ypbind "Set domain" procedure. | ||||||
|  |  */ | ||||||
|  | struct ypbind_setdom { | ||||||
|  | 	domainname ypsetdom_domain; | ||||||
|  | 	ypbind_binding ypsetdom_binding; | ||||||
|  | 	unsigned ypsetdom_vers; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * YP access protocol | ||||||
|  |  */ | ||||||
|  | program YPPROG { | ||||||
|  | 	version YPVERS { | ||||||
|  | 		void | ||||||
|  | 		YPPROC_NULL(void) = 0; | ||||||
|  |  | ||||||
|  | 		bool | ||||||
|  | 		YPPROC_DOMAIN(domainname) = 1; | ||||||
|  |  | ||||||
|  | 		bool | ||||||
|  | 		YPPROC_DOMAIN_NONACK(domainname) = 2; | ||||||
|  |  | ||||||
|  | 		ypresp_val | ||||||
|  | 		YPPROC_MATCH(ypreq_key) = 3; | ||||||
|  |  | ||||||
|  | 		ypresp_key_val | ||||||
|  | 		YPPROC_FIRST(ypreq_key) = 4; | ||||||
|  |  | ||||||
|  | 		ypresp_key_val | ||||||
|  | 		YPPROC_NEXT(ypreq_key) = 5; | ||||||
|  |  | ||||||
|  | 		ypresp_xfr | ||||||
|  | 		YPPROC_XFR(ypreq_xfr) = 6; | ||||||
|  |  | ||||||
|  | 		void | ||||||
|  | 		YPPROC_CLEAR(void) = 7; | ||||||
|  |  | ||||||
|  | 		ypresp_all | ||||||
|  | 		YPPROC_ALL(ypreq_nokey) = 8; | ||||||
|  |  | ||||||
|  | 		ypresp_master | ||||||
|  | 		YPPROC_MASTER(ypreq_nokey) = 9; | ||||||
|  |  | ||||||
|  | 		ypresp_order | ||||||
|  | 		YPPROC_ORDER(ypreq_nokey) = 10; | ||||||
|  |  | ||||||
|  | 		ypresp_maplist | ||||||
|  | 		YPPROC_MAPLIST(domainname) = 11; | ||||||
|  | 	} = 2; | ||||||
|  | } = 100004; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR | ||||||
|  |  */ | ||||||
|  | program YPPUSH_XFRRESPPROG { | ||||||
|  | 	version YPPUSH_XFRRESPVERS { | ||||||
|  | 		void | ||||||
|  | 		YPPUSHPROC_NULL(void) = 0; | ||||||
|  |  | ||||||
|  | #ifdef STUPID_SUN_BUG | ||||||
|  | 		/* This is the form as distributed by Sun.  But even | ||||||
|  | 		   the Sun NIS servers expect the values in the other | ||||||
|  | 		   order.  So their implementation somehow must change | ||||||
|  | 		   the order internally.  We don't want to follow this | ||||||
|  | 		   bad example since the user should be able to use | ||||||
|  | 		   rpcgen on this file.  */ | ||||||
|  | 		yppushresp_xfr | ||||||
|  | 		YPPUSHPROC_XFRRESP(void) = 1; | ||||||
|  | #else | ||||||
|  | 		void | ||||||
|  | 		YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1; | ||||||
|  | #endif | ||||||
|  | 	} = 1; | ||||||
|  | } = 0x40000000;	/* transient: could be anything up to 0x5fffffff */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * YP binding protocol | ||||||
|  |  */ | ||||||
|  | program YPBINDPROG { | ||||||
|  | 	version YPBINDVERS { | ||||||
|  | 		void | ||||||
|  | 		YPBINDPROC_NULL(void) = 0; | ||||||
|  |  | ||||||
|  | 		ypbind_resp | ||||||
|  | 		YPBINDPROC_DOMAIN(domainname) = 1; | ||||||
|  |  | ||||||
|  | 		void | ||||||
|  | 		YPBINDPROC_SETDOM(ypbind_setdom) = 2; | ||||||
|  | 	} = 2; | ||||||
|  | } = 100007; | ||||||
							
								
								
									
										1
									
								
								vendor/README.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/README.md
									
									
									
									
										vendored
									
									
								
							| @@ -313,6 +313,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting | |||||||
| - **RobotFramework:** [shellderp/sublime-robot-plugin](https://github.com/shellderp/sublime-robot-plugin) | - **RobotFramework:** [shellderp/sublime-robot-plugin](https://github.com/shellderp/sublime-robot-plugin) | ||||||
| - **Roff:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff) | - **Roff:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff) | ||||||
| - **Rouge:** [atom/language-clojure](https://github.com/atom/language-clojure) | - **Rouge:** [atom/language-clojure](https://github.com/atom/language-clojure) | ||||||
|  | - **RPC:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle) | ||||||
| - **RPM Spec:** [waveclaw/language-rpm-spec](https://github.com/waveclaw/language-rpm-spec) | - **RPM Spec:** [waveclaw/language-rpm-spec](https://github.com/waveclaw/language-rpm-spec) | ||||||
| - **Ruby:** [atom/language-ruby](https://github.com/atom/language-ruby) | - **Ruby:** [atom/language-ruby](https://github.com/atom/language-ruby) | ||||||
| - **RUNOFF:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff) | - **RUNOFF:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user