[BACK]Return to lpd.h CVS log [TXT][DIR] Up to [local] / src / usr.sbin / lpd

File: [local] / src / usr.sbin / lpd / lpd.h (download)

Revision 1.2, Wed Sep 5 17:32:56 2018 UTC (5 years, 9 months ago) by eric
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4, OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2, OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9, OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7, OPENBSD_6_6_BASE, OPENBSD_6_6, OPENBSD_6_5_BASE, OPENBSD_6_5, OPENBSD_6_4_BASE, OPENBSD_6_4, HEAD
Changes since 1.1: +4 -4 lines

synchronize resolver code with smtpd

/*	$OpenBSD: lpd.h,v 1.2 2018/09/05 17:32:56 eric Exp $	*/

/*
 * Copyright (c) 2017 Eric Faurot <eric@openbsd.org>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#include <sys/types.h>
#include <sys/queue.h>
#include <sys/tree.h>
#include <sys/uio.h>
#include <sys/socket.h>

#include <event.h>
#include <imsg.h>
#include <limits.h>
#include <netdb.h>

#define	PORT_LPR	515

#define	LPD_CONFIG	"/etc/lpd.conf"
#define	LPD_USER	"daemon"
#define	LPD_SOCKET	"/var/run/lpd.sock"

#define	LPR_DEFPRINTER	"lp"
#define	LPR_MAXCMDLEN	BUFSIZ
#define	LPR_MAXFILESIZE	104857600

#define	LOGLEVEL_CONN	2
#define	LOGLEVEL_IMSG	3
#define	LOGLEVEL_IO	4

enum {
	IMSG_NONE,

	IMSG_SOCK_ENGINE,
	IMSG_SOCK_FRONTEND,

	IMSG_CONF_START,
	IMSG_CONF_LISTENER,
	IMSG_CONF_END,

	IMSG_GETADDRINFO,
	IMSG_GETADDRINFO_END,
	IMSG_GETNAMEINFO,

	IMSG_LPR_ALLOWEDHOST,
	IMSG_LPR_DISPLAYQ,
	IMSG_LPR_PRINTJOB,
	IMSG_LPR_RECVJOB,
	IMSG_LPR_RECVJOB_CLEAR,
	IMSG_LPR_RECVJOB_CF,
	IMSG_LPR_RECVJOB_DF,
	IMSG_LPR_RECVJOB_COMMIT,
	IMSG_LPR_RECVJOB_ROLLBACK,
	IMSG_LPR_RMJOB
};

enum {
	PROC_CLIENT,
	PROC_CONTROL,
	PROC_ENGINE,
	PROC_FRONTEND,
	PROC_PRINTER,
	PROC_PRIV
};

enum {
	PROTO_NONE = 0,
	PROTO_LPR
};

struct listener {
	TAILQ_ENTRY(listener)	 entry;
	int			 sock;
	int			 proto;
	struct sockaddr_storage	 ss;
	struct timeval		 timeout;
	struct event		 ev;
	int			 pause;
};

struct lpd_conf {
	TAILQ_HEAD(, listener)	 listeners;
};

struct io;
struct imsgproc;

extern struct lpd_conf *env;
extern struct imsgproc *p_control;
extern struct imsgproc *p_engine;
extern struct imsgproc *p_frontend;
extern struct imsgproc *p_priv;

/* control.c */
void control(int, int);

/* engine.c */
void engine(int, int);

/* frontend.c */
void frontend(int, int);
void frontend_conn_closed(uint32_t);

/* logmsg.c */
const char *log_fmt_proto(int);
const char *log_fmt_imsgtype(int);
const char *log_fmt_proctype(int);
const char *log_fmt_sockaddr(const struct sockaddr *);
void log_imsg(struct imsgproc *, struct imsg *);
void log_io(const char *, struct io *, int);

/* engine_lpr.c */
void lpr_shutdown(void);
void lpr_dispatch_frontend(struct imsgproc *, struct imsg *);
void lpr_printjob(const char *);

/* frontend_lpr.c */
void lpr_init(void);
void lpr_dispatch_engine(struct imsgproc *, struct imsg *);
void lpr_conn(uint32_t, struct listener *, int, const struct sockaddr *);

/* parse.y */
struct lpd_conf *parse_config(const char *, int);
int cmdline_symset(char *);

/* printer.c */
void printer(int, int, const char *);

/* resolver.c */
void resolver_getaddrinfo(const char *, const char *, const struct addrinfo *,
    void(*)(void *, int, struct addrinfo*), void *);
void resolver_getnameinfo(const struct sockaddr *, int,
    void(*)(void *, int, const char *, const char *), void *);
void resolver_dispatch_request(struct imsgproc *, struct imsg *);
void resolver_dispatch_result(struct imsgproc *, struct imsg *);