Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
leafnode(8)		     System Manager's Manual		     leafnode(8)

NAME
     leafnode - NNTP server for small (dialup) sites

SYNOPSIS
     leafnode

DESCRIPTION
     Leafnode  is a USENET package intended for small sites, where there are few
     users and little disk space, but where a large number of groups is desired.

     The design of leafnode is intended to self-repair after  problems,  and  to
     require no manual maintenance.

     The leafnode program itself is the NNTP server.  It is run from inetd(8) or
     xinetd(8) when someone wants to read news.  The other parts of the package,
     fetchnews	and  texpire, are responsible for fetching new news from another
     server, and for deleting old news.

ACCESS CONTROL
     No authentication or access control is supported.	 This  is  a  deliberate
     omission:	Implementing  this  is a job which should not be redone for each
     and every service.

     It is mandatory that you use external access control mechanisms like  tcpd,
     inetd/xinetd  compiled  with  libwrap  support option and the like and that
     these are in effect.  tcpd and libwrap are components  of	Wietse	Venema's
     fine tcp_wrappers package.

     As a very rough last line of defense against abuse, leafnode will drop con-
     nections  from  outside your LANs by default. You can configure leafnode to
     let go of this restriction (look for the allowstrangers option), but do not
     do that unless tight access control is in place.  Someone will  abuse  your
     computer sooner or later. Promised.

     I recommend that either firewalling or tcpd be used for access control.

FILES
     All  these files and directories must be readable by the user "news". It is
     recommended that, unless otherwise stated, that the user "news" be the only
     user in the group "news" and these files belong to "root:news" (user:group)
     so leafnode cannot modify your configuration or filter files.

     /usr/local/etc/leafnode should not be writable by the user "news",  but  it
     must  be  executable  for at least any of the group that the user "news" is
     in.  /usr/local/etc/leafnode/config contains the  configuration  parameters
     for  leafnode.   It  must	not  be writable by the user "news". Set this to
     owner root:news and mode 640. For details, see CONFIGURATION below.

     /var/spool/leafnode must also be readable and writable by the user  "news".
     It  contains  the	news articles; e.g., /var/spool/leafnode/alt/fan/agulbra
     contains the articles in the alt.fan.agulbra group.   Each  directory  con-
     tains  articles  in numbered files (decimal numbers, monotonically increas-
     ing), and a special file called .overview	which  contains  the  "Subject",
     "From", "Date", "Message-ID", "References", "Bytes" and "Lines" headers for
     each article in the group.

     Several subdirectories are special:

     /var/spool/leafnode/leaf.node contains the files that leafnode creates dur-
     ing  operation,  for  example the groupinfo file which contains information
     about each USENET newsgroup. This file is built by fetchnews (8).	You  can
     force  a  complete  rebuild of the groupinfo file by calling fetchnews with
     the parameter -f (see fetchnews (8)).

     /var/spool/leafnode/out.going contains local postings that fetchnews(8)  is
     to  pass to the upstream NNTP server. After a posting has been successfully
     written to disk, its u+r permission flag is set. This flag  is  interpreted
     by  fetchnews(8)  as  "you  may post this article". This prevents fetchnews
     from posting articles that  are  still  being  received  from  newsreaders.
     (Note: versions 1.9.23 to 1.9.32 inclusively used u+x instead, which caused
     some "stuck post" problems with articles in the spool when a prior leafnode
     version  was  updated  to	one  of  these 10 versions. Updating to leafnode
     1.9.33 or later fixes the problem.)

     /var/spool/leafnode/failed.postings contains local postings  that	the  up-
     stream  server rejected.  fetchnews(8) will create files in this directory,
     but none of the leafnode programs will delete anything in it.

     /var/spool/leafnode/message.id contains hard links to each message; this is
     used in place of the dbz database typically used by bigger servers.  (A di-
     rectory such as this is probably  more  efficient	for  the  small  servers
     leafnode is designed for but scales very badly.)

     /var/spool/leafnode/interesting.groups  contains one file for each group an
     NNTP client has asked to read.  leafnode will update the ctime (ls -l  usu-
     ally  shows  the  mtime, try ls -lc) of the relevant file when a LISTGROUP,
     XOVER, XHDR, STAT, HEAD, BODY or ARTICLE command is issued, when a GROUP or
     LIST ACTIVE command (the latter only with a single  group,  not  with  pat-
     terns) is issued for an interesting group (to avoid unsubscribing low-traf-
     fic  groups that are still read) and fetchnews(8) will retrieve all new ar-
     ticles in all groups whose files have been either

	    - touched during the past two days, or

	    - touched more than once, and at least once within the past week.

     The timeout is configurable through the config file variables timeout_short
     and timeout_long. See also fetchnews(8) for the -n option.

     /etc/inetd.conf or /etc/xinetd.conf contains the configuration which starts
     leafnode.	It is strongly recommended to start leafnode as user news.

ENVIRONMENT
     LN_REJECT_POST_PRE
	    If this variable exists, all POST commands are rejected with  a  400
	    code.  Use only for debugging clients.

     LN_REJECT_POST_POST
	    If	this  variable	exists,  the POST command is rejected with a 400
	    code after the article and CRLF.CRLF has been received. Use only for
	    debugging clients.

CONFIGURATION
     All configuration is done using  the  file  /usr/local/etc/leafnode/config,
     which  may  include a filter description file, filterfile for short, as de-
     scribed below.

     For the purposes of this section, whitespace shall be defined as  an  arbi-
     trary  sequence  consisting  of one or more SPACE or HTAB characters, ASCII
     positions 32 and 9, respectively.

     The configuration file is strictly line-oriented with LF or  CRLF	as  line
     terminator.

     Empty lines and lines consisting of only whitespace, possibly followed by a
     comment (introduced by a hash mark (#) and extending through the end of the
     line), are skipped.

     All  other  lines have exactly three mandatory fields, a plain text parame-
     ter, an assignment character (=) optionally surrounded by whitespace and  a
     value.   The  value  is either plain text or - new since leafnode v1.11 - a
     string in double quotes with trivial backslash escape (see below).

     Plain text starts at the first non-whitespace character and extends through
     the last non-whitespace character on the line that  is  not  a  comment.  A
     trailing comment on a line is skipped.

     Quoted  strings are enclosed in double quote characters (").  The backslash
     character (\) is skipped, but it copies the immediately following character
     verbatim, so that you can specify the backslash itself by doubling it  (\\)
     or  a  double  quote character as part of the string by preceding it with a
     backslash (\"); the hash mark has no special meaning as command  introducer
     inside quoted strings. Text after the end of the string is silently ignored
     (this  may  change  in future versions).  Comments after quoted strings are
     ignored.

     MANDATORY PARAMETERS

     These parameters must be specified for leafnode to work.

     server = news02.example.com
	    "server" is used by fetchnews (8) to select what NNTP  server(s)  to
	    retrieve  news  from  and  to post your articles to. You can specify
	    more than one news server; in that case, the servers will be queried
	    from the top down. If you want to post articles,  at  least  one  of
	    your  servers  should  allow  you  to  post.   In the example above,
	    news02.example.com is the news server.

	    This parameter can be given more than once. Each server starts  with
	    a  fresh  set of default configuration options, no inheritance takes
	    place from the previous server definition. Only  options  explicitly
	    marked "server-specific" can be set on a per server basis, "general"
	    options are set for all servers at the same time.

     expire = 5
	    "expire"  is the number of days an article should be kept around. In
	    the example, five days after the article has last been read,  it  is
	    deleted  by texpire (8). This value MUST be at least 1. This parame-
	    ter is global, see the introductory paragraph of the following  GEN-
	    ERAL OPTION PARAMETERS section to find out what this means.

     GENERAL OPTIONAL PARAMETERS

     These  options  can  only be configured once in the configuration file, and
     take effect for leafnode as a whole. It does not  matter  where  these  are
     specified	relative to server= options, but for clarity, you are encouraged
     to place these before the first server= line. Specifying each of the global
     options more than once lets the last copy take effect, but may cause errors
     in the future.

     hostname = host.domain.country
	    By default, leafnode tries hard to figure the host name of your com-
	    puter, skipping inadequate (non-unique) names if possible.	It  will
	    look  up  your computer's host name with gethostname(3) and then try
	    to qualify the  name  with	gethostbyname(3)  if  necessary.  Common
	    sources for the full name therefore are /etc/hosts, NIS and DNS, but
	    consult your system documentation for details.

	    If leafnode fails to determine the host name, this is usually a hint
	    that  your	system	is not configured properly, or it has a hostname
	    that is unsuitable for the domain part of a Message-ID, for example,
	    "localhost.localdomain", and you should fix the name service config-
	    uration. Adding a unique fully-qualified host name to /etc/hosts  is
	    usually sufficient. Please see README-FQDN for more details.

	    You can configure the unique fully-qualified host name here as well,
	    but this is not recommended and discouraged.

     create_all_links = 1
	    Normally, fetchnews will store articles only in the newsgroups which
	    it	considers interesting. With this option set, fetchnews will cre-
	    ate hardlinks for all newsgroups in the Newsgroups: header	that  it
	    knows  about.  This may be of interest if you want to apply a score-
	    or killfile to the local Xref: line.

     maxfetch = 1000
	    "maxfetch" specifies the maximum number of	articles  fetchnews  (8)
	    should  fetch from the upstream server in each group. Its use is not
	    advised, because if you use it you will not see all the traffic in a
	    group. By default there is no limit.

     initialfetch = 1
	    "initialfetch" defines how many articles  from  a  newly  subscribed
	    group  should  be fetched. The default is to fetch all old articles,
	    which can get quite time-consuming when subscribing to a  very  busy
	    group.  This  is  equivalent to setting initialfetch to zero. If you
	    want to get no old articles when subscribing to  a	new  group,  you
	    should set initialfetch to one, as in the example above.

     groupexpire very.crowded.group = 1

     groupexpire very.crowded.hierarchy.* = 1
	    "groupexpire"  makes it possible to adjust expiry times for individ-
	    ual groups. Expiry times are given in days. 0  means  "use	the  de-
	    fault",  negative  values  prevent the expire process for this group
	    altogether (you can consider this an archive mode).  This  value  is
	    used  by  texpire  (8). You can specify as many groupexpire lines as
	    you like. It is possible to specify glob (7)-like  wildcard  expres-
	    sions.

     maxage = 10
	    If	an  article turns up on your upstream news server which is older
	    than "maxage" days it will not been fetched even if you do not  have
	    it	yet.   This  is  useful  if your upstream server gets occasional
	    "hiccups". The default is set to 10. If you want to switch this fea-
	    ture off, set maxage to some very large value, such as  20000  (this
	    is equivalent to roughly 54 years).

     maxold = 10
	    Is synonymous to maxage, see above.

     maxlines = 2000
	    If	you want to avoid receiving very large articles, you may set the
	    "maxlines" parameter to the  maximal  number  of  lines  an  article
	    should have. By default, this feature is switched off.

     minlines = 2
	    Sometimes  newsgroups  are	spammed  with  empty postings. To reject
	    these postings, you can set the "minlines" parameter.  Setting  min-
	    lines to a value larger 4 is probably not a good idea since you will
	    also start to kill "real" postings then. By default, this feature is
	    switched off.

     maxbytes = 100000
	    If you want to avoid receiving very large articles, instead of using
	    the  "maxlines" parameter you can also use the "maxbytes" parameter.
	    By default, this feature is switched off.

     maxcrosspost = 5
	    If you want to combat spam, you can filter out all postings that are
	    posted to more than a certain number of newsgroups.  The  number  is
	    defined  by  setting  "maxcrosspost". Setting this parameter to very
	    low values is probably a bad idea. This feature is switched  off  by
	    default.

     maxgroups = 5
	    Synonymous for maxcrosspost. See above.

     filterfile = /usr/local/etc/leafnode/filters
	    Leafnode  can filter the input headers for arbitrary regular expres-
	    sions.  These are stored in a file designated "filterfile". The for-
	    mat of "filterfile" is very simple: one perl-compatible regular  ex-
	    pression  per  line.  If  one  of  the regular expressions fits to a
	    header to be downloaded, the body of that article will be  rejected.
	    This  feature  is switched off by default. The format of the regular
	    expressions is described in pcre(3).

     timeout_short = 2
	    By default, a group that has  been	accidentally  touched  is  being
	    fetched  for  two  days.  You can change this time by changing time-
	    out_short.

     timeout_long = 7
	    By default, a group that has not been read at all is  being  fetched
	    for  seven	days  before  being  unsubscribed.  This interval can be
	    changed by setting timeout_long to a different value.

     timeout_active = 90
	    By default, active files from the upstream servers are re-read every
	    90 days. This interval can be changed by setting timeout_active to a
	    different value. Be aware that  reading  an  active  file  transfers
	    about one MB of information if the server that you are using carries
	    a reasonable number of groups (i. e. around 20,000).

     timeout_client = 900 (since v1.9.23)
	    By	default,  leafnode will drop the connection 900 seconds (15 min-
	    utes) after seeing the last command from the client. You can  change
	    the timeout here. Setting it too low (like below 5 minutes) will an-
	    noy  your users and consume more system resources for re-reading all
	    the files.

     timeout_fetchnews = 300 (since v1.9.52)
	    Fetchnews will, since v1.9.52, assume the upstream server has become
	    wedged after waiting for a reply for 300 seconds. You can change the
	    timeout here.

     timeout_lock = 5 (since v1.9.54)
	    Configure how  many  seconds  the  leafnode  programs  (applyfilter,
	    checkgroups,  fetchnews, texpire) will wait for the lock file before
	    aborting. Setting this to 0 means to wait indefinitely.   NOTE:  you
	    can  override this by setting the environment variable LN_LOCK_TIME-
	    OUT (note it is not LN_TIMEOUT_LOCK).  The default is 5 seconds.

     delaybody = 1
	    With this option set, fetchnews (8) fetches only the headers  of  an
	    article for visual inspection. Only when the headers have been read,
	    the bodies of the articles will be retrieved the next time fetchnews
	    (8) is called. This can save a huge amount of download time and disk
	    space.

     delaybody_in_situ = 1 (since v1.9.41)
	    This is only applicable with delaybody=1.

	    By default, leafnode will give the full downloaded article a new ar-
	    ticle number so they appear as new in your newsreader. This does not
	    work for all newsreaders. With this option set, leafnode will retain
	    the  original  article number. You'll have to figure out how to tell
	    your newsreader to show old articles. This option defaults to 0.  It
	    is highly recommended to leave it unset.

     debugmode = 1
	    With  this	option	set, fetchnews (8), texpire (8) and leafnode (8)
	    will start to log lots of debugging output via syslog (8) at  facil-
	    ity  news and priority debug. Use it for tracking down problems with
	    your feed. debugmode should be left at 0 for regular use because  it
	    can  log  enormous	amounts of data. The higher the number, the more
	    will be logged. Choosing a figure greater than 3  will  not  make  a
	    difference at the moment.

     allow_8bit_headers = 1 (since v1.9.25)
	    By	default, leafnode rejects local posts that have 8-bit characters
	    in their headers, because they violate relevant standards,	particu-
	    larly RFC-2822 (which RFC-1036 is based on) that demands that Usenet
	    news  headers  (as	mail  headers) must be pure 7-bit US-ASCII, with
	    only whitespace allowed from the control characters.

	    However, as UTF-8 is to come, and some national hierarchies, partic-
	    ularly the Norwegian and Danish (no.*, dk.*) seem to have agreed  on
	    preferring just-send-eight over RFC-2047, you can set this option to
	    allow  8-bit  data	in  headers. Leafnode will however add a warning
	    header if 8-bit data is present, stating that the site administrator
	    allowed this.

	    There is no way to make leafnode accept non-whitespace control char-
	    acters in headers.

     allowSTRANGERS = MAGIC (since v1.9.23)
	    By default, leafnode refuses connections  from  outside  your  LANs.
	    Check  config.example for how to use this parameter to let strangers
	    connect to your leafnode. Instead of MAGIC, you have to write a num-
	    ber as mentioned in config.example. Note  that  capitalization  mat-
	    ters.

     linebuffer = 1
	    By	default,  stdout and sometimes stderr of applications are set to
	    "fully buffered" unless connected to terminals. Use this  option  to
	    explicitly request line buffered mode for stdout and stderr.

     clamp_maxage = 0
	    By default, leafnode will derive a "maxage" argument from the expire
	    time  that	is  applicable	to the group (groupexpire if set, expire
	    otherwise), to prevent fetching articles again that were once  there
	    and  then  cleared	by  texpire(8). Set clamp_maxage=0 to get rid of
	    this behaviour.

     article_despite_filter = 1 (since v1.9.33)
	    By default, fetchnews will request HEAD and  BODY  separately  if  a
	    filter  file is defined and delaybody is off. For high latency, high
	    throughput links (such as interleaved DSL or  satellite  links),  it
	    may be faster to request head and body together with an ARTICLE com-
	    mand  and ignore the body if the filters apply (though it may not be
	    cheaper if you pay per  MByte),  enabling  this  option  will  force
	    leafnode  to  use  the ARTICLE command in spite of filters being de-
	    fined. (Note that in delaybody mode, HEAD and BODY	will  ALWAYS  be
	    requested separately.)

     newsadmin = news@leafnode.example.org (since v1.9.47)
	    This  option  sets the From: address for the placeholder article, it
	    should be the news administrator's mail  address.	It  defaults  to
	    news@HOSTNAME, where HOSTNAME is leafnode's hostname.

     SERVER-SPECIFIC OPTIONAL PARAMETERS

     These  options  can  only be placed after the server= line of the server to
     which you would like these to apply, and they always pertain to the preced-
     ing server= line. Specifying them before the first server= line is  an  er-
     ror.

     username = myname
	    If	any  of your news servers requires authentication, you can enter
	    your username on that server here. This  field  may  occur	multiple
	    times,  once  after  each server definition. See the introduction of
	    this CONFIGURATION section for information on how to quote myname.

     password = mypassword
	    If any of your news servers requires authentication, you  can  enter
	    your  password  on	that  server here. This field may occur multiple
	    times, once after each server definition.	Since  the  password  is
	    available  in  clear text, it is recommended that you set the rights
	    on the config file as restrictive as possible, otherwise other users
	    of your computer will be able to  get  your  password(s)  from  that
	    file.  See the introduction of this CONFIGURATION section for infor-
	    mation on how to quote mypassword.

     port = 8000
	    By default, fetchnews tries to connect to its upstream news  servers
	    on the NNTP port (119). If your servers run on a different port, you
	    can  specify  those  here. This field may occur multiple times, once
	    after each server definition.

	    Note: to modify the port  your  own  leafnode  servers  listens  on,
	    change  the  inetd.conf or xinetd.conf configuration file.	leafnode
	    does not set up its listen port itself.

     timeout = 30
	    By default, leafnode tries to connect for 10 seconds to a server and
	    then gives up. If you have a slow server, you can try for  a  longer
	    time  by  setting  the timeout higher (in this example, 30 seconds).
	    The timeout can be tuned individually for each server.

     noactive = ANYTHING (v1.9.25 ... v1.11.4)

     noactive = 1 (since v1.11.5)
	    If this parameter is set, the active file is never	downloaded  from
	    this server. Use this for very slow servers unless they carry groups
	    that  other servers do not offer. Leafnode versions 1.9.25 to 1.11.4
	    would always assume that "ANYTHING" had been 1. "noactive  =  0"  is
	    supported since v1.11.5.

     nodesc = ANYTHING (until v1.11.4)

     nodesc = 1 (since v1.11.5)
	    Some  servers  do not deliver news groups descriptions correctly be-
	    cause they cannot parse the XGTITLE and LIST NEWSGROUPS commands. In
	    that case, put this line after the "server" line. Leafnode	versions
	    up	to  v1.11.4  would  always  assume  that  "ANYTHING" had been 1.
	    "nodesc = 0" is supported since v1.11.5.

     nopost = 1 (since v1.9.23)
	    Prevent posting to this server. You can use  this  if  the	upstream
	    will  not  let  you post but still greet leafnode with 200 or if the
	    upstream does not forward your postings reliably.

     noread = 1 (since v1.9.33)
	    Prevent fetching news articles or active files from this server. You
	    can use this if the upstream is good to post, but too slow to  fetch
	    news from.

     noxover = 1 (since v1.9.47)
	    Prevent  the  use of XOVER on the current server. Fetchnews will use
	    XHDR instead.

     only_groups_match_all = 1 (since v1.9.52)
	    Usually, when cross-posting an article, fetchnews will post the  ar-
	    ticle  if  ANY  group listed in the Newsgroups: header is matched by
	    the PCRE.  With this option on, ALL groups listed in the Newsgroups:
	    header must match. This can be used to avoid  "poison"  groups  when
	    you have multiple upstream servers.

     only_groups_pcre = PCRE (since v1.9.28)
	    This  parameter  lists  the  Perl-compatible  regular  expression of
	    groups that are fetched or posted to this server. The PCRE is  auto-
	    matically  anchored at the left hand side, so you can omit the lead-
	    ing ^. Remember to escape dots, as in:
	    de\.comp\.|de\.comm\.

	    If this parameter is omitted, all groups are fetched from and posted
	    to this server.

	    Note: you must run fetchnews with  the  -f	option	after  changing,
	    adding or removing any only_groups_pcre option.

	    Hint: you can use something like this to check your only_groups_pcre
	    settings:
	    cut -f1 -d" " @spooldir@/leaf.node/groupinfo \
	    | pcregrep 'PATTERN'

     post_anygroup = 1 (since v1.9.37)
	    This  parameter  makes leafnode post on this server without checking
	    if it carries the group an article is  posted  to.	The  default  is
	    post_anygroup  =  0,  which  means	that  leafnode will check with a
	    "GROUP" command if the server carries  the	group  the  articles  is
	    posted  into.  Use	this  on post-only servers that do not allow the
	    "GROUP" command. Note: inconsiderate use of this parameter may cause
	    articles to end up in the failed.postings directory.

     OBSOLETE PARAMETERS

     supplement
	    is synonymous to server. Do not use it on new installations.

     fqdn   is synonymous to hostname. Do not use it on new installations.

PROTOCOL
     Here are the NNTP commands supported by this server:

     ARTICLE, BODY, DATE, GROUP, HDR, HEAD, HELP, LAST, LIST, LIST ACTIVE,  LIST
     ACTIVE.TIMES,  LIST  EXTENSIONS,  LIST NEWSGROUPS, LIST OVERVIEW.FMT, LIST-
     GROUP, MODE, NEWGROUPS, NEXT, POST, OVER, SLAVE, STAT, XHDR, XOVER.   These
     commands  follow RFC-977 and RFC-2980, except HDR and OVER which are recog-
     nized in anticipation of current NNTP drafts.

     Note that the syntax of HDR and OVER may change.

BUGS
     Leafnode is totally unaware of UTF-8 and will reject a  client  that  posts
     UTF-8  characters	in  the  header. Current Usefor drafts claim all article
     headers UTF-8 encoded Unicode.  Leafnode  still  expects  RFC-2047  instead
     which may eventually be phased out in favour of UTF-8.

     Leafnode stops reading a line at the first NUL character.

     Leafnode may not cope well with crosspostings that cross hierarchies if you
     have multiple upstream feeds and use the only_groups_pcre configuration op-
     tion.

     Leafnode  will  only bother to determine the time zone offset for generated
     Date: headers for posts that lack them on systems that offer the  tm_gmtoff
     member in struct tm (commonly BSD and GNU systems).

AUTHOR
     Written  by  Arnt	Gulbrandsen  <agulbra@troll.no> and copyright 1995 Troll
     Tech AS, Postboks 6133 Etterstad, 0602 Oslo, Norway, fax +47 22646949.

     Modified by Cornelius Krasel <krasel@wpxx02.toxi.uni-wuerzburg.de>, Randolf
     Skerka	 <Randolf.Skerka@gmx.de>      and	Markus	     Enzenberger
     <enz@cip.physik.uni-muenchen.de>.	 Copyright  of	the modifications 1997 -
     1999.

     Modified by Matthias  Andree  <matthias.andree@gmx.de>,  Copyright  1999  -
     2002.   Modified  by  Ralf  Wildenhues  <ralf.wildenhues@gmx.de>, Copyright
     2002.

     Jonathan Larmour <jifl@jifvik.org> contributed the timeout_client feature.

     Andreas Meininger <a.meininger@gmx.net> contributed the code to let texpire
     ignore groupexpire = -1 groups.

     Mark Brown <broonie@debian.org> added the noactive option.

     Numerous contributions by other people.

     The initial development of  leafnode  has	been  paid  for  by  Uninett  AS
     (http://www.uninett.no/).

SEE ALSO
     applyfilter(8), checkgroups(8), fetchnews(8), newsq(1), texpire(8).

     tcpd(8), hosts_access(5), glob(7), pcre2(3), RFC 977, RFC 2980.

leafnode			     1.12.0			     leafnode(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=leafnode&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help