source: trunk/third/openssh/getput.h @ 18759

Revision 18759, 1.9 KB checked in by zacheiss, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18758, which included commits to RCS files with non-trunk default branches.
Line 
1/*      $OpenBSD: getput.h,v 1.8 2002/03/04 17:27:39 stevesk Exp $      */
2
3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
5 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
6 *                    All rights reserved
7 * Macros for storing and retrieving data in msb first and lsb first order.
8 *
9 * As far as I am concerned, the code I have written for this software
10 * can be used freely for any purpose.  Any derived versions of this
11 * software must be clearly marked as such, and if the derived work is
12 * incompatible with the protocol description in the RFC file, it must be
13 * called by a name other than "ssh" or "Secure Shell".
14 */
15
16#ifndef GETPUT_H
17#define GETPUT_H
18
19/*------------ macros for storing/extracting msb first words -------------*/
20
21#define GET_64BIT(cp) (((u_int64_t)(u_char)(cp)[0] << 56) | \
22                       ((u_int64_t)(u_char)(cp)[1] << 48) | \
23                       ((u_int64_t)(u_char)(cp)[2] << 40) | \
24                       ((u_int64_t)(u_char)(cp)[3] << 32) | \
25                       ((u_int64_t)(u_char)(cp)[4] << 24) | \
26                       ((u_int64_t)(u_char)(cp)[5] << 16) | \
27                       ((u_int64_t)(u_char)(cp)[6] << 8) | \
28                       ((u_int64_t)(u_char)(cp)[7]))
29
30#define GET_32BIT(cp) (((u_long)(u_char)(cp)[0] << 24) | \
31                       ((u_long)(u_char)(cp)[1] << 16) | \
32                       ((u_long)(u_char)(cp)[2] << 8) | \
33                       ((u_long)(u_char)(cp)[3]))
34
35#define GET_16BIT(cp) (((u_long)(u_char)(cp)[0] << 8) | \
36                       ((u_long)(u_char)(cp)[1]))
37
38#define PUT_64BIT(cp, value) do { \
39  (cp)[0] = (value) >> 56; \
40  (cp)[1] = (value) >> 48; \
41  (cp)[2] = (value) >> 40; \
42  (cp)[3] = (value) >> 32; \
43  (cp)[4] = (value) >> 24; \
44  (cp)[5] = (value) >> 16; \
45  (cp)[6] = (value) >> 8; \
46  (cp)[7] = (value); } while (0)
47
48#define PUT_32BIT(cp, value) do { \
49  (cp)[0] = (value) >> 24; \
50  (cp)[1] = (value) >> 16; \
51  (cp)[2] = (value) >> 8; \
52  (cp)[3] = (value); } while (0)
53
54#define PUT_16BIT(cp, value) do { \
55  (cp)[0] = (value) >> 8; \
56  (cp)[1] = (value); } while (0)
57
58#endif                          /* GETPUT_H */
Note: See TracBrowser for help on using the repository browser.