]>
git.saurik.com Git - apple/network_cmds.git/blob - tcpdump.tproj/print-sunrpc.c
2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * "Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7 * Reserved. This file contains Original Code and/or Modifications of
8 * Original Code as defined in and that are subject to the Apple Public
9 * Source License Version 1.0 (the 'License'). You may not use this file
10 * except in compliance with the License. Please obtain a copy of the
11 * License at http://www.apple.com/publicsource and read it before using
14 * The Original Code and all software distributed under the License are
15 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19 * License for the specific language governing rights and limitations
22 * @APPLE_LICENSE_HEADER_END@
25 * Copyright (c) 1992, 1993, 1994, 1995, 1996
26 * The Regents of the University of California. All rights reserved.
28 * Redistribution and use in source and binary forms, with or without
29 * modification, are permitted provided that: (1) source code distributions
30 * retain the above copyright notice and this paragraph in its entirety, (2)
31 * distributions including binary code include the above copyright notice and
32 * this paragraph in its entirety in the documentation or other materials
33 * provided with the distribution, and (3) all advertising materials mentioning
34 * features or use of this software display the following acknowledgement:
35 * ``This product includes software developed by the University of California,
36 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
37 * the University nor the names of its contributors may be used to endorse
38 * or promote products derived from this software without specific prior
40 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
41 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
42 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
46 static const char rcsid
[] =
47 "@(#) $Header: /cvs/Darwin/Commands/NeXT/network_cmds/tcpdump.tproj/print-sunrpc.c,v 1.1.1.1 1999/05/02 03:58:34 wsanchez Exp $ (LBL)";
50 #include <sys/param.h>
52 #include <sys/socket.h>
60 #include <netinet/in.h>
61 #include <netinet/if_ether.h>
62 #include <netinet/in_systm.h>
63 #include <netinet/ip.h>
64 #include <netinet/ip_var.h>
67 #ifdef HAVE_RPC_RPCENT_H
68 #include <rpc/rpcent.h>
70 #include <rpc/pmap_prot.h>
77 #include "interface.h"
78 #include "addrtoname.h"
80 static struct tok proc2str
[] = {
81 { PMAPPROC_NULL
, "null" },
82 { PMAPPROC_SET
, "set" },
83 { PMAPPROC_UNSET
, "unset" },
84 { PMAPPROC_GETPORT
, "getport" },
85 { PMAPPROC_DUMP
, "dump" },
86 { PMAPPROC_CALLIT
, "call" },
91 static char *progstr(u_int32_t
);
94 sunrpcrequest_print(register const u_char
*bp
, register u_int length
,
95 register const u_char
*bp2
)
97 register const struct rpc_msg
*rp
;
98 register const struct ip
*ip
;
101 rp
= (struct rpc_msg
*)bp
;
102 ip
= (struct ip
*)bp2
;
105 (void)printf("%s.%x > %s.sunrpc: %d",
106 ipaddr_string(&ip
->ip_src
),
107 (u_int32_t
)ntohl(rp
->rm_xid
),
108 ipaddr_string(&ip
->ip_dst
),
111 (void)printf("%s.%x > %s.%x: %d",
112 ipaddr_string(&ip
->ip_src
),
113 (u_int32_t
)ntohl(rp
->rm_xid
),
114 ipaddr_string(&ip
->ip_dst
),
117 printf(" %s", tok2str(proc2str
, " proc #%u",
118 (u_int32_t
)ntohl(rp
->rm_call
.cb_proc
)));
119 x
= ntohl(rp
->rm_call
.cb_rpcvers
);
121 printf(" [rpcver %u]", x
);
123 switch (ntohl(rp
->rm_call
.cb_proc
)) {
127 case PMAPPROC_GETPORT
:
128 case PMAPPROC_CALLIT
:
129 x
= ntohl(rp
->rm_call
.cb_prog
);
131 printf(" %s", progstr(x
));
134 printf(".%u", (u_int32_t
)ntohl(rp
->rm_call
.cb_vers
));
143 register struct rpcent
*rp
;
147 if (lastprog
!= 0 && prog
== lastprog
)
149 rp
= getrpcbynumber(prog
);
151 (void) sprintf(buf
, "#%u", prog
);
153 strcpy(buf
, rp
->r_name
);