1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
|
.TH PRINTCAP 5 2006-12-09 "LPRng" "lpd configuration"
.SH NAME
printcap \- printer capability data base
.SH SYNOPSIS
printcap database
.SH DESCRIPTION
The format of the LPRng
.I printcap
database was based on the
.IR termcap (5)
data base file format.
Entries in the
.I printcap
Each entry in the data base is used to define various options and
values to control the printing and spooling of print jobs.
.SH "LPD.CONF, SYSTEM AND USER PRINTCAP FILES"
Default configuration values are read from the
LPRng configuration file
/etc/lprng/lpd.conf,
consult the lpd.conf(5) man page for details about them.
The system printcap file
/etc/printcap
contains information common to all users and the LPRng printing
system.
Finally,
the user printcap files is in
${HOME}/.printcap
and contain user configurable information for printer information.
The values in the user printcap file override values in the
printcap file
which override the default values in the
/etc/lprng/lpd.conf
file.
.LP
The user printcap file is used by client programs such as
.I lpr ,
.I lprm ,
.I lpq ,
and
.I lpq
to allow the user to define either a special set of printers,
provide additional configuration information,
or to modify default settings in the /etc/printcap,
or
/etc/lprng/lpd.conf
file.
.SH CAPABILITIES
The printcap database files format is based on the
.I termcap (5)
database format,
modified as follows.
Leading whitespace on each line is discarded,
and blank lines or lines which then start with a
comment character (#) are discarded.
A line which does not start with a colon (:) or bar (|) starts
a printer entry definition.
Lines ending with a backslash (\e) are assumed to continue
to the next line; this is for compatibility with other
historical printcap file formats.
Trailing blanks and tabs (whitespace) for an option value
are deleted unless the last one is escaped with a backslash
(``\\'').
If a colon character value is required then the \e:
escape sequence can be used, e.g.: dest=ftp\e://address/file.
.LP
A printer definition starts with a primary printer name,
followed by zero or more alternative printer names,
followed by a set of keyword entries and values.
For example:
.nf
.sp
.ft CW
#comment
# primary printer name
lp
#alternate names
|lp2|lp3
|Example of a printer
:sd=/usr/spool/LPD/lp
:rw:lp=/dev/lp:mx#100
include /etc/printcap/mainprintcap
.sp
.fi
.LP
The special printcap definition
.I include
will read the named file,
which must have an absolute pathname,
as the next set of printcap entries.
.LP
Keywords can be 1 to an indefinite number of characters long,
and are case sensitive.
Values for keywords can be strings
(:st=string:),
signed integer values using the C language notation,
(:nu#12:max#-2:mask#0x1EF:),
or flags
(:flag: to set to 1, :flag@: to clear to 0).
Integer values must be representable as 32 bit 2's complement numbers;
care should be taken with extremely large numbers.
.LP
If the primary name of a printcap entry starts with a punctuation character,
then the entry may be referenced using the
.I tc
capability, but is ignored otherwise.
This allows common printcap information to be placed in a single entry.
.LP
The special printcap entry
.I oh
(i.e. - only this host) may be used to select a printcap entry for
use by one or more hosts.
The oh entry can be a list of one or more host names or glob type of
patterns.
These patterns are first applied to the host's fully qualified domain name,
and then used to to a lookup of an IP address.
If either the glob match or the host has a matching IP address then the
printcap entry is selected for use.
In addition,
the
.I server
flag indicates that only the LPD server is to use this printcap entry.
This allows client and server printcap information be to be segregated
in a simple manner.
.LP
The following is a list of the keywords currently used by the LPRng software.
Many of these keywords are used only by the
.I LPD
server,
others are used by the client programs
.I LPR,
.I LPC,
.I LPRM,
.I PAC,
as well as the server.
In the Use column in the table below,
an
.B A
stands for all programs,
.B D
stands for
.IR lpd ,
and
.B R
stands for the client programs such as
.I LPR.
.LP
Some of these entries can only appear or have an effect if they are
in the lpd.conf initialization file.
See lpd.conf(5) for further details.
.SH "ENTRIES BY ALPHABETICAL ORDER"
.sp
.nf
.ta \w'\0\0\0\0'u +\w'\0\0\0\0'u +\w'Type 'u +\w'Default 'u +4n +4n +4n +4n +4n +4n 8i
\fBFL Use Type Default Description\fR
Xf D str NULL output filter for format X (used by lpd).
'filter' sets default filter
ab D bool false always print banner, ignore lpr -h option
achk D bool false
If TRUE LPD and the :as specifies a remote host or
filter or the :af specifies a remote host or filter
then after writing the accounting information to the
destination a reply will be read. The value of the
reply determines how the job is to be handled.
ae D str accounting format for end of job or a program to run
to record accounting information (see also af, la, ar
and Accounting).
af D str NULL
accounting file, filter, or remote accounting server
(see also la, ar, as, ae, achk). If format is |/path then
the program will be started and accounting information
will be written to the program STDIN. If the format
host%port, a tcp/ip connection will be made to port
on host and the accounting information written to the
remote host. In both of these cases the write operation
must succeed or an error will result. If the format
is neither of these cases then the value will be treated
as a file and accounting information appended to the file
if it exists. The accounting file will not be created,
it must exist for LPD to append data to it.
The :as and :ae fields have the accounting information.
ah D bool false auto-hold - job held until explicitly released
all A str NULL a list of all printers; (see ALL PRINTERS)
allow_duplicate_flags A bool false
allow duplicate command line flags; last overwrites earlier
allow_getenv A bool (compile time)
allows LPRng software to use the LPD_CONF environment variable
to specify the location of a configuration file. This is
for testing only.
allow_user_logging A bool false
if mail is requested using lpr -mhost%port,prot operations,
and the allow_user_logging flag is true, then job logging
information will be sent to host%port,prot.
allow_user_setting A str NULL
allow these users to impersonate other users with the
lpr -U user@host, lpc -U user@host, etc., options
append_z A str
append these options to the -Z options for the job
ar D bool true write remote transfer accounting (if af, and as/ae set)
architecture A str (compile time)
architecture the software was compiled for. (Obsolete.)
as D str accounting format for start of job or a program to run
to record accounting information (see also af, la, ar
and Accounting).
auth R str NULL
client to server authentication type
be D str banner printing program for end (overrides bp, hl)
bk R bool false Berkeley-compatible: be strictly RFC-compliant
or more exactly, BSD LPR compatible when sending jobs.
bk_filter_options D str (see source code)
when bk flag set, options for non OF print filters
bk_of_filter_options D str (see source code)
when bk flag set, options for OF print filters
bkf R bool false
use bk_filter_options and bk_of_filter_options when
invoking print filter.
bl D str banner line - sent to banner printer program
default: $-'C:$-'n Job: $-'J Date: $-'t
expands to: Class:User Job: job Date: date
This is to force compatibility with vintage print filters
that require a non-standard banner string. Usually used with
:sb: option.
bp D str banner printing program (see hl)
(default: configuration variable default_banner_printer)
bq_format D str l format of output from bounce queue filters
br D num none if lp is a tty, set the baud rate (see ty)
break_classname_priority_link A flag false
Do not set priority to first letter of class name
bs D str banner printing program for start (overrides bp, hl)
cf D str NULL cifplot data filter
check_for_nonprintable R bool false
lpr checks f and p formats for printable files
check_for_protocol_violations R bool false
check for RFC1179 protocol violations
chooser D str load balance queue destination chooser program
chooser_interval D num 10
load balance queue does checks for a
destination queue available at this interval
chooser_routine D bool false
use the user provided chooser routine for this queue
class_in_status A bool true
show class name in lpq status rather than priority
cm A str NULL comment identifying printer (LPQ)
config_file A str /etc/lprng/lpd.conf
location of LPRng configuration information. Compile
time option only - see allow_getenv.
connect_grace A num 0
time between jobs to allow printer recovery
connect_interval A num 10
time between open or connection attempts
connect_timeout A num 10
timeout value for connection or open
control_file_line_order D str NULL
Put the control file lines in a specific order
control_filter D str NULL
Filter for control file. Used when sending job to remote
spool queue.
create_files D bool false
create log, debug, etc., files automatically
db A str NULL LPD debug options when serving this queue.
See lf (log file) entry as well.
default_format R str f
default format for printing jobs
default_permission D str A
default permission for operation
default_printer A str lp
default printer for printing jobs
default_priority R str A
default priority for printing jobs
default_remote_host A str localhost
default remote host for printing operations
default_tmp_dir A str /tmp
default temporary directory
destinations D str NULL
names of printers that lpq/lprm should talk to
find a job that has been processed by a router
script (see README.routing)
df D str NULL tex data filter (DVI format)
done_jobs D num 1
retain status for last N jobs
done_jobs_max_age num 0
remove status older than N seconds (0 - no removal)
exit_linger_timeout A num 10
socket SO_LINGER timeout value
fd D bool false if true, no forwarded jobs accepted
ff D str ``\ef'' string to send for a form feed (see INITIALIZATION)
filter D str NULL
default filter to use for printing file
filter_ld_path D str (see source)
the LD_LIBARY_PATH environment variable value for filters
filter_options D str (see source code)
when bk flag clear, options for non OF print filters
filter_path D str (default '/bin:/usr/bin')
the PATH environment variable value for filters
filter_poll_interval D num 30
interval to poll OF filter
filter_stderr_to_status_file D bool false
set the filter STDERR to the status file and do
no report errors in the queue status file.
fo D bool false print a form feed when device is opened
force_fqdn_hostname A bool FALSE
Force a fully qualified host name in control file
force_ipadddr_hostname A bool FALSE
Force the IP address of the host to be used for the
hostname in control file
force_localhost A bool TRUE
Forces the clients programs (lpr, lpc, etc.)
to send all print jobs and requests to the server running
on the localhost entry for action. This flag effectively
forces BSD LPR behavior.
force_lpq_status D str NULL
Specifies a list of LPQ formats and hosts which get status
returned in this format. For example
force_lpq_status=s=pc*;l=mac* will cause hosts whose
FQDN matches pc* to get short status and those which
match mac* to get long format.
force_queuename A str NULL
When :qq: flag or use_queuename configuration is enabled,
specifies the queuename to be used for control file Q
information.
ff_separator D bool false
need form feeds to separate job files
fq D bool false print a form feed when device is closed
full_time D bool detailed time format specification in log messages
fx A str NULL valid output filter formats
i.e. ``flp'' would allow f, l, and p
default is to allow all formats
gf D str NULL graph data filter (plot (3X) format)
generate_banner D bool false
generate a banner when forwarding job
group D str daemon LPD server group id for execution
hl D bool false print banner after job instead of before
if D str NULL filter command, run on a per-file basis
ignore_requested_user_priority D bool false
Ignore the requested user priority when ordering jobs.
Prevents students... um... users from queue jumping.
ipv6 A bool false Use IPV6
keepalive A bool true
set socket SO_KEEPALIVE option
kerberos_keytab D str /etc/lpd.keytab
Kerberos lpd server keytab file
kerberos_life D str NULL
Kerberos lpd server key lifetime
kerberos_renew D str NULL
Kerberos lpd server key renewal time
kerberos_server_principle D str NULL
Kerberos remote lpd server principle
kerberos_service D str lpr
Kerberos service used in principle requests
la D bool true write local printer accounting (if af is set)
ld D str NULL leader string printed on printer open (see INITIALIZATION)
lf D str ``log'' error and debugging log file (LPD)
lk D bool false lock the lp device to force arbitration
lockfile D str /var/spool/lpd/lpd
lpd lock file (used only in lpd.conf).
The lpd_port port value is appended
to the lockfile value to provide a unique lockfile
even when different versions of LPRng are running
on the same system.
logger_destination D str NULL
destination for logging information. Format is
host%port
logger_max_size D num 1024
logger file maximum size in K
logger_path D str NULL
logger file pathname
logger_timeout D num 0
logger connection timeout. 0 is no timeout.
longnumber D bool false
use 6 digit job numbers
lp D str NULL device name or pipe to send output to
lpd_bounce A bool FALSE
Forces lpd to filter jobs and then forward them
as a single file
(See Bounce Queues)
lpd_force_poll A bool FALSE
Forces lpd to periodically poll lpd queues.
lpd_poll_time A num 600
Check queues for work at this interval; start queues
in groups of 'lpd_poll_servers_started' at intervals
of 'lpd_poll_start_interval' seconds
lpd_poll_start_interval A num 10
Start 'lpd_poll_servers_started' queue servers at this
interval.
lpd_poll_servers_started A num 10
Start 'lpd_poll_servers_started' queues at once
lpd_port D str printer
format is [ipaddr%]port. If the ipaddr is present
then the lpd listening socket is bound to the specified
ip address and port only, otherwise it is bound to all
interfaces. If the port value is not a number then the
then the getservbyname() system call is used to get the
port number.
lpd_printcap_path D str (see source)
printcap path for lpd, used instead of printcap path
(configuration value only)
lpr_bounce R bool true
Forces lpr to filter jobs and then send them.
(See Bounce Queues)
lpr_bsd R bool false
when set, LPR -m will not take argument, but will use
$USER value for return mail address.
mail_from D str NULL
specifies the user part of email From: address
mail_operator_on_error D str NULL
send mail to this user when LPD encounters printing error.
max_connect_interval A num 60
maximum time between connection attempts
max_log_file_size D num 0
maximum log file size in K bytes (0 is unlimited)
spool queue log file truncated to min_log_file_size
when value is nonzero and limited exceeded.
max_servers_active D num 0
maximum servers that LPD will allow to be active at one
time. 0 selects the system default, which is usually
pretty small, perhaps 10. (configuration value only).
max_status_line D num 79 maximum number of characters on an LPQ status line
max_status_size D num 10 maximum size (Kbytes) of status file
mc R num 1 maximum copies allowed
min_log_file_size D num 0 minimum size (Kbytes) of log file
min_status_size D num 2 minimum size (Kbytes) of status file
minfree D str 0
minimum space (in K) for spool directory
ml R num 32 minimum printable characters for printable check
ms_time_resolution D bool false
log time in milliseconds
mx R num 0 maximum job size in K, 0 = unlimited
nb D num 0 if non-zero, do a nonblocking open on lp device
nf D str NULL DITROFF data filter
network_connect_grace A num 0
time between attempts to send jobs to spooler
Useful when dealing with network printer using LPD
interface to allow a bit of time between jobs.
nline_after_file D bool false
put the N (filename) after the data file information
in the control file. Use to handle systems that want
it that way.
of D str NULL output filter, run once for all output
(used for banner printing, form feeds between files)
of_filter_options D str (see source code)
when bk flag clear, options for OF print filters
oh A str NULL Specific printcap entry for host;
(printcap entry ignored unless IP address of host and
entry value match. Entry is used first to do glob
style match against the host's fully qualified domain name,
and then interpreted as a general IP address)
order_routine D bool false
use a user provided routine to generate queue order
information.
originate_port A str 512 1023
when originating a connection, use ports in this range.
pass_env A str LANG,LC_CTYPE,LC_NUMERIC,LC_TIME,LC_COLLATE,LC_MONETARY,LC_MESSAGES,LC_PAPER,LC_NAME,LC_ADDRESS,LC_TELEPHONE,LC_MEASUREMENT,LC_IDENTIFICATION,LC_ALL
if not the LPD server, sanitize and put these variables
in a filter environment variable list.
perms_path A str /etc/lprng/lpd.perms
location of perms file (used in lpd.conf)
pl D num 66 page length (in lines)
pr D str ``/bin/pr'' pr program for p format
prefix_o_to_z D bool false
prefix the control file O line to the control file
Z line.
prefix_z D str NULL
prefix the specified options to the control file
Z line.
prefix_z_to_o D bool false
prefix the control file Z line to the control file
O line.
printcap_path A str /etc/printcap
location of printcap file (only in lpd.conf)
ps A str ''status'' printer status file name
pw D num 132 page width (in characters)
px D num 0 page width in pixels (horizontal)
py D num 0 page length in pixels (vertical)
qq A bool false LPR - puts in the queue name (Q entry)
in the job control file when spooled or transferred.
LPD - when receiving or transferring a job,
if the queue name (Q entry) in the job control
file is not present, puts in the queue name.
queue_control_file D str control.%P
name of the queue control file
queue_lock_file D str %P
name of the queue lock file
queue_status_file D str status.%P
name of the queue status file
queue_unspooler_file D str unspooler.%P
name of the queue unspooler status file
remote_support A str NULL
if non-null, specifies allowed operations to remote queue.
R=lpr, M=lprm, Q=lpq, V = lpq -v, C=lpc. For example,
remote_support=RM would only allow LPR and LPRM operations.
remove_z D str null
remove these options from the control file Z line
report_server_as A str NULL
use the str value as the name of the server when reporting
LPQ or LPC status.
require_explicit_q Require a queue to be specified, do not use default
queue from printcap.
retry_econnrefused A bool true
if set, retry a connection to a remote system when an
ECONNREFUSED error is returned.
retry_nolink D bool true
if LPD is sending a job or opening a device for
printing and the value is true, then the connection or
device open is repeated indefinitely.
return_short_status D str NULL
Some legacy (non-LPRng) LPQ programs expect 'short' status
to be returned. This option allows you to specify which hosts
will get it. The value is a list of hosts and/or IP addresses
and masks to which the LPD server will provide short status.
For example: return_short_status=192.8.0.0/16 will make LPD
return short status to all requests from hosts in subnet
192.8.0.0. (See short_status_length)
reuse_addr A bool false
if set, use SO_REUSEADDR on outgoing connection ports.
This reduces the problems with exhausting port numbers.
(usually only in lpd.conf)
reverse_lpq_status D str NULL
When a lpq status request arrives from one of the specified
hosts or IP addresses, then the LPQ status format is inverted.
For example, if reverse_lpq_status=host*,127.0.0.0/8,
then when a LONG status request arrives from host1 or from
IP address 127.0.0.1, the SHORT status will be returned.
reverse_priority_order D bool false
Make highest priority A, lowest Z
rf D str NULL filter for printing FORTRAN style text files
rg A str NULL (restrict to group members)
Restrict use of queue to users which are members of
specified groups.
rm A str NULL remote-queue machine (hostname) (with rp)
router D str NULL script that dynamically re-routes a job
(see README.routing)
rp A str NULL remote-queue printer name (with rm)
rw D bool false open the printer for reading and writing
safe_chars D str NULL
additional safe characters for control file contents
save_on_error D bool false
Save job when an error occurs to allow post-mortem
diagnostics or reprinting. This should only be set on
print queues. It is also a diagnostic aid.
save_when_done D bool false
Save job when done (printed, transferred) to allow
retry at a later time. This should only be set on
print queues. It is also a diagnostic aid.
sb D bool false short banner (one line only)
sd A str NULL spool directory (only ONE printer per directory!)
send_block_format A bool false
Use the LPRng extended 'block job' job transmission
method to send a job to a remote site.
send_data_first A bool false send data files then control files
when sending a job to a remote host.
send_failure_action D str "remove"
Action on print or transmission failure after send_try
attempts; use the following codes:
'success' (JSUCC) - treat as successful
'abort' (JABORT) - abort printer
'retry' (JRETRY) - retry job
'remove' (JREMOVE)- remove job
'hold' (JHOLD) - hold job
If the value is "|/filter", the filter will be run and
the number of attempts can be read from standard input.
The filter should exit with one of the error codes listed
above to cause the appropriate action.
send_job_rw_timeout A num 6000
timeout on read/write operations when sending job to
printer or remote host (0 value is no timeout)
send_query_rw_timeout A num 6000
timeout on read/write operations when performing a status
operation (0 value is no timeout)
send_try A num 3
number of times to try sending
or printing a job. 0 is infinite.
sendmail D str /usr/sbin/sendmail -oi -t
sendmail command to send mail to user. Flags must be set
so that address and other information is taken from
standard input.
server A bool false printcap entry for server only
server_auth_command A str NULL
authentication command for server program
server_tmp_dir D str /tmp
temporary directory for server to create files when there
is no spool directory.
server_user D str daemon server user name used in authentication operations
sf D bool true suppress form feed separators between job files
sh D bool false suppress headers and/or banner page
shell D str /bin/sh
SHELL environment variable value for filters
short_status_length D num 1
If the return_short_status value is used and has a match against
a requesting address, this amount of status is set by the
short_status_length option. For most legacy systems a 1 is
suitable (1 line of status).
socket_linger A num 10
if nonzero, forces a SO_LINGER operation to be done
on all TCP/IP connections. This usually corrects a problem
with missing last data transmissions to remote hosts.
spool_dir_perms D num 042700 permissions for spool directory
spool_file_perms D num 0600 permissions for spool file
ss D str NULL name of queue that server serves (with sv)
ssl_XXX D str NULL
SSL authentication and encryption options.
See lprng_certs(1) for details.
ssl_ca_file str A /etc/lprng/ssl.ca/ca.crt
SSL signing certificate file
ssl_ca_path str A NULL
SSL signing certificate directory. Default is
directory containing ssl_ca_file.
ssl_server_cert str A /etc/lprng/ssl.server/server.crt
SSL server certificate
ssl_server_password str A
SSL server certificate password
stalled_time D num 120
Time after which to report an active job as stalled
stop_on_abort D bool true
Stop processing queue when print filter aborts.
stty D str NULL stty settings for serial connected printer
suspend_of_filter D bool true
suspend OF filter and restart. If false, close filter
and start new one for each activity.
sv D str NULL names of servers for queue (with ss)
syslog_device D str /dev/console
name of syslog device to use if no syslog facility
tc A str NULL reference to a printcap entry to include as part of
the current entry.
tf D str NULL troff data filter (C/A/T phototypesetter)
tr D str NULL trailer string to print when queue empties
translate_format D str NULL
translate job format (similar to tr(1) utility)
on outgoing jobs.
Example: translate_format=pfml
p format changed to f, m format to l
translate_incoming_format D str NULL
translate job format (similar to tr(1) utility)
on incoming jobs. See translate_format.
use_date A bool true add date line ('D') to control file
use_identifier R bool true
add job identifier lines ('A') in the control file
use_info_cache D bool true cache printcap information
use_shorthost R bool false
use only the hostname for job control
and data file names. Host information in job file
will still be fully qualified domain name.
user D str daemon LPD effective user (EUID) for SUID operations
wait_for_eof D bool true
wait for EOF on input when readable IO device,
do not close immediately at job end.
vf D str NULL (Versatek) raster image filter
.fi
.SH "ENTRIES BY FUNCTION"
.LP
See the alphabetical listing for detailed information.
.sp
.nf
.ta \w'\0\0\0\0'u +\w'\0\0\0\0'u +\w'Type 'u +\w'Default 'u +4n +4n +4n 8i
.sp
.B "Filters and Page Formats"
Xf D str NULL output filter for format X (used by lpd)
'filter' sets default filter
cf D str NULL cifplot data filter
control_filter D str NULL
Filter for control file. Used when sending job to remote
spool queue.
df D str NULL tex data filter (DVI format)
direct_read D bool false
if true, filters are given direct access to file.
This means no progress indication possible.
fx A str NULL valid output filter formats
i.e. ``flp'' would allow f, l, and p
default is to allow all formats
gf D str NULL graph data filter (plot (3X) format)
if D str NULL filter command, run on a per-file basis
lpd_bounce R bool false
Forces lpd to filter jobs and then forward them.
(See Bounce Queues)
lpr_bounce R bool false
Forces lpr to filter jobs and then send them.
(See Bounce Queues)
nf D str NULL DITROFF data filter
of D str NULL output filter, run once for all output
pl D num 66 page length (in lines)
pr D str ``/bin/pr'' pr program for p format
pw D num 132 page width (in characters)
px D num 0 page width in pixels (horizontal)
py D num 0 page length in pixels (vertical)
rf D str NULL filter for printing FORTRAN style text files
translate_format D str NULL
translate job format (similar to tr(1) utility)
only valid when transferring to remote spool queue.
Example: translate_format=pfml
p format changed to f, m format to l
tf D str NULL troff data filter (C/A/T phototypesetter)
vf D str NULL (Versatek) raster image filter
.B Banners
ab D bool false always print banner, ignore lpr -h option
be D str banner printing program for end (overrides bp, hl)
bp D str banner printing program (use hl to print banner at end)
bs D str banner printing program for start (overrides bp, hl)
hl D bool false print banner after job instead of before
sb D bool false short banner (one line only)
sh D bool false suppress headers and/or banner page, overrides ab
.B Accounting
ae D str accounting format for end of job or a program to run
to record accounting information (see also af, la, ar
and Accounting).
af D str NULL name of accounting file (see also la, ar)
ar D bool true write remote transfer accounting (if af, and as/ae set)
as D str accounting format for start of job or a program to run
to record accounting information (see also af, la, ar
and Accounting).
la D bool true write local printer accounting (if af is set)
.B "Queue control"
ah D bool false auto-hold - job held until explicitly released
bk R bool false backwards-compatible: be strictly RFC-compliant
bkf R bool false backwards-compatible filter: use Berkeley filter options
bqfilter D bool false if a bounce queue (sends jobs to remote site)
then when bqfilter true and a format filter is specified,
sends data files through format filter before transfer.
See also 'qq'.
cd D str NULL control information directory for LPD server
cm A str NULL comment identifying printer (LPQ)
fd D bool false if true, no forwarded jobs accepted
lf D str ``log'' error and debugging log file (LPD)
longnumber D bool false
use 6 digit job numbers
mc R num 1 maximum copies allowed
ml R num 32 minimum printable characters for printable check
minfree D str 0 minimum space (Kb) to be left in spool filesystem
You can also use nnnM for nnn megabytes.
mx R num 0 maximum job size (1Kb blocks, 0 = unlimited)
ps A str ''status'' printer status file name
nw A bool false spool dir is on an NFS file system
(take precautions when reading/writing files)
qq A bool false place queue information in control file. See
alphabetical for details.
rm A str NULL remote-queue machine (hostname) (with rp)
rp A str NULL remote-queue printer name (with rm)
sd A str NULL spool directory (only ONE printer per directory!)
ss D str NULL name of queue that server serves (with sv)
sv D str NULL names of servers for queue (with ss)
sc R bool false suppress multiple copies
use_auth A str NULL authentication to use
use_date A bool true add date line ('D') to control file
use_identifier R bool true
add job identifier lines ('A') in the control file
use_shorthost R bool false use only the hostname for job control
and data file names. Host information in job file
will still be fully qualified domain name.
.B "Connection and Interface to Printer"
db A num 0 debug level when using this printer
connect_interval A num 10
time between open or connection attempts
connect_timeout A num 10
timeout value for connection or open
(0 is infinite number)
ff D str ``\ef'' string to send for a form feed (see INITIALIZATION)
fo D bool false print a form feed when device is opened
fq D bool false print a form feed when device is closed
ld D str NULL leader string printed on printer open (see INITIALIZATION)
lp D str NULL device name or pipe to send output to
lk D bool false lock the lp device to force arbitration
max_connect_interval A num 60
maximum time between connection attempts
nb D num 0 if non-zero, do a nonblocking open on lp device
retry_econnrefused A bool true
if set, retry a connection to a remote system when an
ECONNREFUSED error is returned.
retry_nolink D bool true
if LPD is sending a job or opening a device for
printing and the value is true, then the connection or
device open is repeated indefinitely.
rs D num 300 number of seconds between spool queue status scans
rt D num 3 number of times to try printing (0=infinite).
rw D bool false open the printer for reading and writing
save_on_error D bool false
See above.
save_when_done D bool false
See above.
send_failure_action D str remove
See above.
send_try alias for rt
sf D bool true suppress form feed separators between job files
socket_linger A num 10
if nonzero, forces a SO_LINGER operation to be done
on all TCP/IP connections. This usually corrects a problem
with missing last data transmissions to remote hosts.
tr D str NULL trailer string to print when queue empties
.B "Serial Line Setup"
br D num none if lp is a tty, set the baud rate (see ty)
stty D str NULL stty commands to set output line characteristics
alias is sy, ms
xs D num 0 like `xc' but set bits (see STTY)
.B Miscellaneous
.nf
all A str NULL a list of all printers; (see ALL PRINTERS)
destinations D str NULL
names of printers that lpq/lprm should talk to find
a job that has been processed by a router script
(see README.routing)
forward_auth D str NULL
server to server authentication type, e.g. kerberos
force_localhost A bool TRUE
Forces the clients programs (lpr, lpc, etc.)
to send all print jobs and requests to the server running
on the localhost entry for action. This flag effectively
forces BSD LPR behaviour.
force_queuename A str NULL
See above.
logger_destination D str NULL
destination for logging information. Format is
host[%port][,(TCP|UDP)]
oh D str NULL Specific printcap entry for host. See above.
remote_support A str RMQC
if non-null, specifies allowed operations to remote queue.
R=lpr, M=lprm, Q=lpq, C=lpc
router D str NULL script that dynamically re-routes a job
(see README.routing)
server A bool false printcap entry for server only
server_auth_command D str NULL
authentication command for server to use.
tc A str NULL reference to a printcap entry to include as part of
the current entry.
use_auth D str NULL
client to server authentication type, e.g. kerberos
user_auth_command R str NULL
authentication command for user (client program)
.nf
.SH "FILTERS"
.PP
By convention,
all output filter names have the form
.B Xf,
where
.B X
is the lower case letter corresponding to the lpr formatting option.
The
.B filter
option can specify a default filter for job files.
.PP
The
.B of
filter is started for each job and is used to print the
banner page and any FF separators between individual files of the job.
It is sent a special stop sequence by the lpd server,
and must suspend operations until sent a
SIGCONT signal.
A file or job filter
is run separately for each file;
at the end of the job the
.B of
filter is restarted and used to print the trailing banner (if any)
and FF separators.
.LP
Filters are invoked with a standard set of options defined by the
bk_filter_options (backwards compatible),
bk_of_filter_options (backwards compatible OF filter),
and
filter_options configuration variables.
See the
lpd(8)
manual page for details.
If the first characters of the filter specification are -$,
i.e.- Xf=-$ filter,
then the command line options are not added.
Currently,
the options are:
.nf
bk_filter_options $P $w $l $x $y $F $c $L $i $J $C $0n $0h $-a
bk_of_filter_options $w $l $x $y
filter_options $C $F $H $J $L $P $Q $R $Z $a $c $d \e
$e $f $h $i $j $k $l $n $s $w $x $y $-a
.fi
.SH "SPOOL QUEUES"
.LP
Printcap entries which have a spool directory value
(sd) are called spool queues.
Jobs sent to a printer with a spool queue are place in the
spool directory.
When checking the spool queue for jobs,
the server will check to see if there is a printcap file in the
directory with the name
.BR printcap. host.
If there is,
the additional printcap information is processed and used by the
server.
.LP
If the spool directory is NFS exported,
then remote hosts can manipulate the spool entries directly;
this can have catastrophic effects,
especially in systems where the NFS implementation has defects.
The printcap information is particularly vulnerable to exploitation,
as well as symbolic links,
jobs which cannot be removed,
etc.
.SH "LOCAL PRINTERS"
.LP
Local printers have an
.B lp
entry,
which is the device that output should be sent
to,
usually a serial port tty.
PLP supplements this by
using the lp field to indicate a remote printer,
or by allowing communication with the printer using a separate
program, known as an
.I lp-pipe,
instead of a serial line.
If the printcap
.B lp
entry contains a string of the form
.B printer@host,
jobs are forwarded to the specified remote printer on the host.
If the printcap
.B lp
entry contains a string of the form
.B | command args
, the command
.B command
is run, with the arguments
.B args .
This can be used to communicate with printers connected to
network terminal servers, some TCP/IP-capable
printers, and just about anything you can hack up a
communication program for. Read the LPRng Manual for more
details.
.SH "STTY OPTIONS"
.PP
The
.B stty
printcap parameter recognizes a set of
.IR stty (1)
options
that can be used to set serial line characteristics for the printer.
However, due to the differences between implementations of UNIX,
there are several sets of
.B ty
options supported. Invoke
.IR lpd (8)
with the ``-v'' command-line option to see which set your
installation is using.
.PP
Systems using the
.IR sgtty
tty manipulation interface may use the following
.IR stty (1)
options:
.nf
.PP
.ta 16n +16n +16n +16n +16n +16n +16n +16n +16n
bs0 bs1 [-]cbreak cooked cr0
cr1 cr2 cr3 [-]decctlq [-]echo
[-]even ff0 ff1 [-]lcase [-]litout
nl0 nl1 nl2 nl3 [-]nl
[-]noflsh new [-]nohang old [-]odd
[-]raw start stop tab0 tab1
tab2 [-]tabs [-]tandem tek ti700
[-]tilde tn300 tty33 tty37 vt05
[-]evenp [-]oddp [-]pass8
.fi
.PP
Systems using
.IR termio
may use the following options:
.nf
.PP
[-]ignbrk [-]brkint [-]ignpar [-]parmrk [-]inpck
[-]istrip [-]inlcr [-]igncr [-]icrnl [-]iuclc
[-]ixon [-]ixany [-]ixoff [-]decctlq [-]tandem
[-]imaxbel [-]opost [-]olcuc [-]onlcr [-]ocrnl
[-]onocr [-]onlret [-]ofill [-]ofdel [-]cstopb
[-]cread [-]parenb [-]parodd [-]hupcl [-]clocal
[-]loblk [-]parity [-]evenp [-]oddp [-]stopb
[-]hup [-]crtscts [-]isig [-]noisig [-]icanon
[-]cbreak [-]xcase [-]echo [-]echoe [-]echok
[-]crterase [-]lfkc [-]echonl [-]noflsh [-]tostop
[-]echoctl [-]ctlecho [-]echoprt [-]prterase [-]echoke
[-]crtkill [-]lcase [-]nl [-]litout [-]pass8
[-]raw [-]sane [-]cooked [-]nopost fill
nl0 nl1 cr0 cr1 cr2
cr3 tab0 tab1 tab2 tab3
bs0 bs1 vt0 vt1 ff0
ff1 cs5 cs6 cs7 cs8
nul-fill del-fill -tabs
.fi
.PP
And systems using
.IR termios
may use the following options:
.nf
.PP
[-]ignbrk [-]brkint [-]ignpar [-]parmrk [-]inpck
[-]istrip [-]inlcr [-]igncr [-]icrnl [-]iuclc
[-]ixon [-]ixany [-]ixoff [-]imaxbel [-]pass8
[-]opost [-]olcuc [-]onlcr [-]ocrnl [-]onocr
[-]onlret [-]ofill [-]ofdel [-]tabs nl0
nl1 cr0 cr1 cr2 cr3
tab0 tab1 tab2 tab3 bs0
bs1 vt0 vt1 ff0 ff1
cs5 cs6 cs7 cs8 [-]cstopb
[-]cread [-]parenb [-]parodd [-]hupcl [-]clocal
[-]crtscts [-]evenp [-]parity [-]oddp [-]pass8
[-]isig [-]icanon [-]xcase [-]echo [-]echoe
[-]echok [-]echonl [-]noflsh [-]tostop [-]iexten
[-]echoctl [-]ctlecho [-]echoprt [-]prterase [-]echoke
[-]crtkill [-]flusho [-]pendin
.fi
.PP
The
.B fc
,
.B fs
,
.B xc
, and
.B xs
printcap entries are obsolete,
and if present with non-zero values will abort print job processing.
.SH "INITIALIZATION"
.LP
Many printers require an initialization string to be sent to them
in order to configure their operation.
The leader (ld) and trailer (tr) strings are sent at the start and
end of job processing.
These strings are interpreted using the C language conventions for
character representation:
\ennn is replaced with a character with the value nnn,
\en with a new line,
\er with a carriage return,
and so forth.
.SH "ALL PRINTERS"
.LP
The LPRng software has the capability to use a remote database
for obtaining printcap and other information.
One of the difficulties arises when a list of all printers
available is needed.
By convention,
the special printer name
.B all
is reserved for this information;
the
.B all
field is a list of printers separated by spaces or punctuation.
For example:
.sp
.nf
#all printers
all:all=lp1,lp2,lp3,lp4
.fi
.SH ACCOUNTING
.PP
Accounting in the LPRng package has evolved over time
to accommodate new requirements.
The general approach is to use either a simple
.B "log to file"
method in which the accounting information is written
to a log file or a more complex
.B "log to program"
method in which the accounting information is written
to a program.
The information and method and actions taken
are specified by the following entries:
.nf
:as - start of job accounting
:ae - end of job accounting
:af - default job accounting
:achk - used accounting for authorization.
.fi
.PP
The value of the :as and :ae options are either
a string which is used as the accounting information
or a program which is executed to log or save the accounting
information.
If a program is executed then the value of the
:af entry is ignored and the program is run to record
the job accounting information.
For example:
.nf
# string for information logging
:as=jobend $H $n $P $k $b $t
:ae=jobstart $H $n $P $k $b $t
:as=|/usr/local/libexec/logjobstart $H $n $P $k $b $t
:ae=|/usr/local/libexec/logjobend $H $n $P $k $b $t
.fi
.PP
If the
:as or :ae value is a string then the :af information
is used to record the accounting information:
.nf
af=|/path - run program, :as or :ae written to
program STDIN
af=host%port - tcp/ip connection to port on host,
:as or :ae written to connection
af=path - treat path as a file pathname,
if file exists append :as or :ae
to file.
.PP
If the :achk flag is set then this is modified as follows.
If the :as entry specifies a program or :af entry specifies a
program or remote host (i.e. - logging using program) then
after accounting information has been written to the
program or connection a response will be read from the program
STDOUT or the connection.
This response is expected to be an ASCII string.
If the line is blank or starts with ACCEPT then the job will be printed,
HOLD will hold the job, REMOVE will remove the job,
and ABORT or a non-recognizable response will cause printing to be aborted.
.PP
If the output is written to a program then the exit status
of the program can be used as well.
If the program exits with nonzero status then the
exit code controls the disposition:
JHOLD, JREMOVE, and JABORT will hold, remove,
or abort the job respectively.
If the exit status is 0, then
the filter's STDOUT will be read and processed as described above.
.SH "BOUNCE QUEUES AND PRINT FORMATS"
.PP
If the lp option value has the format
.B ":lp=pr@host"
or job forwarding is specified by
.B ":rp=pr:rm=host"
then the normal operation is simple to store and forward
the print jobs.
If filters are specified then the job files are first
filtered and then the output of the filters is sent to the destination.
For historical reasons, a spool queue that does filtering and
forwarding is called a
.IR "bounce queue" .
The
.B bounce_queue_format
(default 'f')
specifies the output for the filtered files.
If this is not desirable the
.B translate_format
option can be used to specify a format.
The option has the form SdSdSdN,
where S is the original format and d is the final format.
If none of the formats match and there is an odd number of formats
then the last one is used.
For example,
.B pfmlf
would convert formats
p to f, m to l, and v to f.
.PP
The
\&:lpd_bounce
flag concatenate the output of the filters
and the result will be sent as a single job file to the destination.
This facility is useful when handling legacy print spooler
applications that do not understand the RFC1179 copy,
etc., options.
The first letter of the
.B bounce_queue_format
(default 'f')
is used as the output file format.
.PP
The
.B lpr_bounce
printcap flag can be used to cause LPR to do bounce queue filtering
in exactly the same manner as the server.
This should be used with caution
as missing filters on the client system can cause unexpected behavior.
.SH "KERBEROS, AND OTHER AUTHENTICATION METHODS"
.PP
LPRng supports built in kerberos authentication.
To enable this, the
LPD protocol has been extended to provide a way to transfer authenticated
and/or encrypted jobs and commands.
The details are covered in the LPRng HOWTO documentation.
.PP
Also, SSL can be used.
See
.BR lprng_certs (1)
for details.
.SH FILES
.PP
The files used by LPRng are set by values in the
printer configuration file.
The following are a commonly used set of default values.
.nf
.ta \w'/var/spool/lpd/printcap.<hostname> 'u
/etc/lprng/lpd.conf LPRng configuration file
${HOME}/.printcap user printer description file
/etc/printcap printer description file
/etc/lprng/lpd.perms permissions
/var/run/lprng/lpd lock file for queue control
/var/spool/lpd spool directories
/var/spool/lpd/QUEUE/control queue control
/var/spool/lpd/QUEUE/log trace or debug log file
/var/spool/lpd/QUEUE/acct accounting file
/var/spool/lpd/QUEUE/status status file
.fi
.SH "SEE ALSO"
lpd.conf(5),
lpc(8),
lpd(8),
checkpc(8),
lpr(1),
lpq(1),
lprm(1),
lpd.perms(5),
pr(1), lprng_certs(1), lprng_index_certs(1).
.SH "AUTHOR"
Patrick Powell <papowell@lprng.com>.
.SH DIAGNOSTICS
Most of the diagnostics are self explanatory.
If you are puzzled over the exact cause of failure,
set the debugging level on (-D5) and run again.
The debugging information will
help you to pinpoint the exact cause of failure.
.SH "HISTORY"
LPRng is a enhanced printer spooler system
with functionality similar to the Berkeley LPR software.
The LPRng developer mailing list is lprng-devel@lists.sourceforge.net;
subscribe by visiting
.B https://lists.sourceforge.net/lists/listinfo/lprng-devel
or sending mail to
.B lprng-request@lists.sourceforge.net
with
the word
.I subscribe
in the body.
.br
The software is available via
.B http://lprng.sourceforge.net
|