[BACK]Return to misc.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / crypto / external / bsd / openssh / dist

Annotation of src/crypto/external/bsd/openssh/dist/misc.h, Revision 1.15

1.8       christos    1: /*     $NetBSD: misc.h,v 1.7 2014/10/19 16:30:58 christos Exp $        */
1.15    ! christos    2: /* $OpenBSD: misc.h,v 1.74 2018/07/27 05:13:02 dtucker Exp $ */
1.1       christos    3:
                      4: /*
                      5:  * Author: Tatu Ylonen <ylo@cs.hut.fi>
                      6:  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
                      7:  *                    All rights reserved
                      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 _MISC_H
                     17: #define _MISC_H
                     18:
1.11      christos   19: #include <sys/time.h>
1.13      christos   20: #include <sys/types.h>
1.11      christos   21:
1.7       christos   22: /* Data structure for representing a forwarding request. */
                     23: struct Forward {
                     24:        char     *listen_host;          /* Host (address) to listen on. */
                     25:        int       listen_port;          /* Port to forward. */
                     26:        char     *listen_path;          /* Path to bind domain socket. */
                     27:        char     *connect_host;         /* Host to connect. */
                     28:        int       connect_port;         /* Port to connect on connect_host. */
                     29:        char     *connect_path;         /* Path to connect domain socket. */
                     30:        int       allocated_port;       /* Dynamically allocated listen port */
                     31:        int       handle;               /* Handle for dynamic listen ports */
                     32: };
                     33:
1.10      christos   34: int forward_equals(const struct Forward *, const struct Forward *);
1.11      christos   35: int daemonized(void);
1.10      christos   36:
1.7       christos   37: /* Common server and client forwarding options. */
                     38: struct ForwardOptions {
                     39:        int      gateway_ports; /* Allow remote connects to forwarded ports. */
                     40:        mode_t   streamlocal_bind_mask; /* umask for streamlocal binds */
                     41:        int      streamlocal_bind_unlink; /* unlink socket before bind */
                     42: };
                     43:
1.1       christos   44: /* misc.c */
                     45:
                     46: char   *chop(char *);
                     47: char   *strdelim(char **);
1.15    ! christos   48: char   *strdelimw(char **);
1.1       christos   49: int     set_nonblock(int);
                     50: int     unset_nonblock(int);
                     51: void    set_nodelay(int);
1.14      christos   52: int     set_reuseaddr(int);
                     53: char   *get_rdomain(int);
                     54: int     set_rdomain(int, const char *);
1.1       christos   55: int     a2port(const char *);
                     56: int     a2tun(const char *, int *);
                     57: char   *put_host_port(const char *, u_short);
                     58: char   *hpdelim(char **);
                     59: char   *cleanhostname(char *);
                     60: char   *colon(char *);
1.14      christos   61: int     parse_user_host_path(const char *, char **, char **, const char **);
1.10      christos   62: int     parse_user_host_port(const char *, char **, char **, int *);
1.14      christos   63: int     parse_uri(const char *, const char *, char **, char **, int *, const char **);
1.1       christos   64: long    convtime(const char *);
                     65: char   *tilde_expand_filename(const char *, uid_t);
1.2       christos   66: char   *percent_expand(const char *, ...)
                     67: #if __GNUC_PREREQ__(4, 0)
                     68:     __attribute__((__sentinel__))
                     69: #endif
                     70:     ;
1.1       christos   71: char   *tohex(const void *, size_t);
                     72: void    sanitise_stdfd(void);
1.7       christos   73: struct timeval;
1.1       christos   74: void    ms_subtract_diff(struct timeval *, int *);
                     75: void    ms_to_timeval(struct timeval *, int);
1.14      christos   76: void    monotime_ts(struct timespec *);
                     77: void    monotime_tv(struct timeval *);
1.6       christos   78: time_t  monotime(void);
1.10      christos   79: double  monotime_double(void);
1.7       christos   80: void    lowercase(char *s);
                     81: int     unix_listener(const char *, int, int);
1.14      christos   82: int     valid_domain(char *, int, const char **);
                     83: const char *atoi_err(const char *, int *);
                     84: int     parse_absolute_time(const char *, uint64_t *);
                     85: void    format_absolute_time(uint64_t, char *, size_t);
1.4       christos   86:
1.7       christos   87: int    bcrypt_pbkdf(const char *, size_t, const u_int8_t *, size_t,
                     88:     u_int8_t *, size_t, unsigned int);
1.2       christos   89:
1.1       christos   90: struct passwd *pwcopy(struct passwd *);
                     91: const char *ssh_gai_strerror(int);
                     92:
                     93: typedef struct arglist arglist;
                     94: struct arglist {
                     95:        char    **list;
                     96:        u_int   num;
                     97:        u_int   nalloc;
                     98: };
1.4       christos   99: void    addargs(arglist *, const char *, ...)
1.1       christos  100:             __attribute__((format(printf, 2, 3)));
1.4       christos  101: void    replacearg(arglist *, u_int, const char *, ...)
1.1       christos  102:             __attribute__((format(printf, 3, 4)));
                    103: void    freeargs(arglist *);
                    104:
1.14      christos  105: int     tun_open(int, int, char **);
1.1       christos  106:
                    107: /* Common definitions for ssh tunnel device forwarding */
                    108: #define SSH_TUNMODE_NO         0x00
                    109: #define SSH_TUNMODE_POINTOPOINT        0x01
                    110: #define SSH_TUNMODE_ETHERNET   0x02
                    111: #define SSH_TUNMODE_DEFAULT    SSH_TUNMODE_POINTOPOINT
                    112: #define SSH_TUNMODE_YES                (SSH_TUNMODE_POINTOPOINT|SSH_TUNMODE_ETHERNET)
                    113:
                    114: #define SSH_TUNID_ANY          0x7fffffff
                    115: #define SSH_TUNID_ERR          (SSH_TUNID_ANY - 1)
                    116: #define SSH_TUNID_MAX          (SSH_TUNID_ANY - 2)
                    117:
1.7       christos  118: /* Fake port to indicate that host field is really a path. */
                    119: #define PORT_STREAMLOCAL       -2
                    120:
1.1       christos  121: /* Functions to extract or store big-endian words of various sizes */
                    122: u_int64_t      get_u64(const void *)
1.7       christos  123:     __attribute__((__bounded__( __minbytes__, 1, 8)));
1.1       christos  124: u_int32_t      get_u32(const void *)
1.7       christos  125:     __attribute__((__bounded__( __minbytes__, 1, 4)));
1.1       christos  126: u_int16_t      get_u16(const void *)
1.7       christos  127:     __attribute__((__bounded__( __minbytes__, 1, 2)));
1.1       christos  128: void           put_u64(void *, u_int64_t)
1.7       christos  129:     __attribute__((__bounded__( __minbytes__, 1, 8)));
1.1       christos  130: void           put_u32(void *, u_int32_t)
1.7       christos  131:     __attribute__((__bounded__( __minbytes__, 1, 4)));
1.1       christos  132: void           put_u16(void *, u_int16_t)
1.7       christos  133:     __attribute__((__bounded__( __minbytes__, 1, 2)));
                    134:
                    135: /* Little-endian store/load, used by umac.c */
                    136: u_int32_t      get_u32_le(const void *)
                    137:     __attribute__((__bounded__(__minbytes__, 1, 4)));
                    138: void           put_u32_le(void *, u_int32_t)
                    139:     __attribute__((__bounded__(__minbytes__, 1, 4)));
1.1       christos  140:
1.4       christos  141: struct bwlimit {
                    142:        size_t buflen;
                    143:        u_int64_t rate, thresh, lamt;
                    144:        struct timeval bwstart, bwend;
                    145: };
                    146:
                    147: void bandwidth_limit_init(struct bwlimit *, u_int64_t, size_t);
                    148: void bandwidth_limit(struct bwlimit *, size_t);
                    149:
                    150: int parse_ipqos(const char *);
1.5       christos  151: const char *iptos2str(int);
1.4       christos  152: void mktemp_proto(char *, size_t);
1.1       christos  153:
1.13      christos  154: void    child_set_env(char ***envp, u_int *envsizep, const char *name,
                    155:             const char *value);
                    156:
                    157: int     argv_split(const char *, int *, char ***);
                    158: char   *argv_assemble(int, char **argv);
                    159: int     exited_cleanly(pid_t, const char *, const char *, int);
                    160:
                    161: struct stat;
                    162: int     safe_path(const char *, struct stat *, const char *, uid_t,
                    163:             char *, size_t);
                    164: int     safe_path_fd(int, const char *, struct passwd *,
                    165:             char *err, size_t errlen);
                    166:
1.1       christos  167: /* readpass.c */
                    168:
                    169: #define RP_ECHO                        0x0001
                    170: #define RP_ALLOW_STDIN         0x0002
                    171: #define RP_ALLOW_EOF           0x0004
                    172: #define RP_USE_ASKPASS         0x0008
                    173:
                    174: char   *read_passphrase(const char *, int);
                    175: int     ask_permission(const char *, ...) __attribute__((format(printf, 1, 2)));
                    176:
1.11      christos  177: #define MINIMUM(a, b)  (((a) < (b)) ? (a) : (b))
                    178: #define MAXIMUM(a, b)  (((a) > (b)) ? (a) : (b))
                    179: #define ROUNDUP(x, y)   ((((x)+((y)-1))/(y))*(y))
                    180:
1.1       christos  181: #endif /* _MISC_H */

CVSweb <webmaster@jp.NetBSD.org>