components/ftp-proxy/patches/002-smf.patch
author Jay Cotton <Jay.Cotton@Oracle.com>
Mon, 03 Apr 2017 15:13:06 -0700
changeset 7827 4de3a5b9c0a3
parent 5789 5183fa4a46ce
permissions -rw-r--r--
25789688 Pulseaudio needs to use the oss solaris audio driver.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     1
# This patch comes from Oracle. It turns the component into
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     2
# a well-behaving SMF service. It adds code manipulating service
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     3
# properties, service instances, and also provides security in
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     4
# cooperation with the service manifest (especially, extra
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     5
# privileges are dropped when not needed).
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     6
#
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     7
# This patch is not going to upstream, the changes are Solaris-specific.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     8
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
     9
diff -Naur ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/Makefile ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/Makefile
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    10
--- ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/Makefile	2016-02-10 04:21:21.337202150 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    11
+++ ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/Makefile	2016-02-10 04:59:25.999134460 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    12
@@ -3,7 +3,7 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    13
 CFLAGS+= -m64 -errwarn
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    14
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    15
 PROG=	ftp-proxy
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    16
-SRCS=	ftp-proxy.c filter.c
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    17
+SRCS=	ftp-proxy.c filter.c smf-config.c
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    18
 OBJS=$(SRCS:.c=.o)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    19
 MAN=	ftp-proxy.8
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    20
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    21
diff -Naur ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/filter.c ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/filter.c
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    22
--- ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/filter.c	2016-02-10 04:24:03.599069704 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    23
+++ ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/filter.c	2016-02-02 03:05:13.156044052 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    24
@@ -53,6 +53,10 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    25
 static int dev, rule_log;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    26
 static char *qname, *tagname;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    27
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    28
+#ifdef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    29
+char *FTP_PROXY_ANCHOR;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    30
+#endif /* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    31
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    32
 int
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    33
 add_addr(struct sockaddr *addr, struct pf_pool *pfp)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    34
 {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    35
diff -Naur ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/filter.h ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/filter.h
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    36
--- ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/filter.h	2016-02-10 04:25:34.896131457 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    37
+++ ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/filter.h	2016-02-08 23:45:38.805421033 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    38
@@ -16,7 +16,11 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    39
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    40
  */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    41
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    42
+#ifdef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    43
+extern char* FTP_PROXY_ANCHOR;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    44
+#else /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    45
 #define	FTP_PROXY_ANCHOR "ftp-proxy"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    46
+#endif /* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    47
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    48
 int add_nat(u_int32_t, struct sockaddr *, int, struct sockaddr *, u_int16_t,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    49
     struct sockaddr *, u_int16_t, u_int16_t);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    50
diff -Naur ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/ftp-proxy.8 ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/ftp-proxy.8
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    51
--- ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/ftp-proxy.8	2016-02-24 06:31:17.792565815 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    52
+++ ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/ftp-proxy.8	2016-03-14 08:05:39.671773194 -0700
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    53
@@ -23,7 +23,7 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    54
 .Sh SYNOPSIS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    55
 .Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    56
 .Bk -words
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    57
-.Op Fl 6Adrv
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    58
+.Op Fl A Cm on | off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    59
 .Op Fl a Ar address
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    60
 .Op Fl b Ar address
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    61
 .Op Fl D Ar level
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    62
@@ -31,8 +31,10 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    63
 .Op Fl P Ar port
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    64
 .Op Fl p Ar port
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    65
 .Op Fl R Ar address
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    66
+.Op Fl r Cm on | off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    67
 .Op Fl T Ar tag
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    68
 .Op Fl t Ar timeout
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    69
+.Op Fl v Cm all | on | off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    70
 .Ek
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    71
 .Sh DESCRIPTION
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    72
 .Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    73
@@ -83,6 +85,9 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    74
 .It Fl A
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    75
 Only permit anonymous FTP connections.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    76
 Either user "ftp" or user "anonymous" is allowed.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    77
+Solaris Note: you need to specify
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    78
+.Cm on | off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    79
+to enable/disable anonymous-only mode.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    80
 .It Fl a Ar address
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    81
 The proxy will use this as the source address for the control
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    82
 connection to a server.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    83
@@ -93,9 +98,6 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    84
 Debug level, ranging from 0 to 7.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    85
 Higher is more verbose.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    86
 The default is 5.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    87
-.It Fl d
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    88
-Do not daemonize.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    89
-The process will stay in the foreground, logging to standard error.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    90
 .It Fl m Ar maxsessions
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    91
 Maximum number of concurrent FTP sessions.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    92
 When the proxy reaches this limit, new connections are denied.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    93
@@ -118,6 +120,9 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    94
 .It Fl r
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    95
 Rewrite sourceport to 20 in active mode to suit ancient clients that insist
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    96
 on this RFC property.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    97
+Solaris Note: you need to specify
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    98
+.Cm on | off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
    99
+to enable/disable RFC compliant mode.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   100
 .It Fl T Ar tag
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   101
 The filter rules will add tag
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   102
 .Ar tag
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   103
@@ -147,6 +152,20 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   104
 .Sq log all
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   105
 flag.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   106
 The pf rules do not log by default.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   107
+Solaris Note: the option is tri-state.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   108
+You need to specify one of the values below:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   109
+.Bl -tag -width "all" -offset 3n -compact
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   110
+.It off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   111
+nothing is logged
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   112
+.It on
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   113
+log only packets, which create state for data session (equivalent to
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   114
+.Fl v
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   115
+on OpenBSD)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   116
+.It all
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   117
+log all packets, which belong to data session (equivalent to
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   118
+.Fl vv
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   119
+on OpenBSD)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   120
+.El
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   121
 .El
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   122
 .Sh CONFIGURATION
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   123
 To make use of the proxy,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   124
@@ -156,10 +175,18 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   125
 last rule explicitly allowing FTP sessions from the proxy may not be
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   126
 necessary.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   127
 .Bd -literal -offset 2n
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   128
-anchor "ftp-proxy/*"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   129
+anchor "_auto/network:firewall:ftp-proxy:YOUR_INSTANCE_NAME/*"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   130
 pass in quick inet proto tcp to port ftp rdr-to 127.0.0.1 port 8021
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   131
 pass out inet proto tcp from (self) to any port ftp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   132
 .Ed
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   133
+.Sh SOLARIS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   134
+.Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   135
+must be started as an
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   136
+.Xr smf 7
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   137
+service:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   138
+.Bd -literal -offset indent
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   139
+svc:/network/firewall/ftp-proxy
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   140
+.Ed
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   141
 .Pp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   142
 To run
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   143
 .Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   144
@@ -168,8 +195,157 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   145
 svc:/network/socket-filter:pf_divert
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   146
 .Ed
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   147
 instance must be online in the global zone.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   148
+.Pp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   149
+The options described in DESCRIPTION section are set using smf properties.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   150
+Properties processed by
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   151
+.Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   152
+enable
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   153
+.Xr smf_method 7
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   154
+in order to configure the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   155
+.Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   156
+daemon are listed below.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   157
+.Bl -tag -width "ftp-proxy/always-use-ftp-data-port" -offset 3n -compact
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   158
+.It ftp-proxy/anonymous-only
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   159
+If set to
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   160
+.Cm on
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   161
+the proxy is started with the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   162
+.Fl A
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   163
+option, which allows anonymous FTP logins only.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   164
+The value
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   165
+.Cm off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   166
+is used as default.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   167
+.It ftp-proxy/proxy-NAT-address
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   168
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   169
+.Fl a
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   170
+option, the source IP address the proxy uses
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   171
+to connect to a server.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   172
+.It ftp-proxy/proxy-listen-address
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   173
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   174
+.Fl b
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   175
+option, which is the address, where the proxy accepts a connection from
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   176
+a client.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   177
+.It ftp-proxy/proxy-listen-port
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   178
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   179
+.Fl p
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   180
+option which is the port number, where the proxy accepts
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   181
+a connection from a client.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   182
+.It ftp-proxy/debug-level
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   183
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   184
+.Fl D
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   185
+option, which is a debug level (0-7).
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   186
+If not set, the default value 5 is used.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   187
+.It ftp-proxy/max-sessions
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   188
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   189
+.Fl m
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   190
+option, which is the maximum of concurrent FTP sessions served by
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   191
+the proxy.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   192
+The valid range is from 1 to 500.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   193
+If not specified the value 100 is used by default.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   194
+.It ftp-proxy/reverse-mode-address
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   195
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   196
+.Fl R
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   197
+option.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   198
+It is the fixed server address, which is typically used to access
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   199
+a FTP server behind NAT.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   200
+.It ftp-proxy/reverse-mode-port
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   201
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   202
+.Fl P
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   203
+option, which is the port number used by a FTP server behind NAT.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   204
+The default value is 21.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   205
+.It ftp-proxy/always-use-ftp-data-port
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   206
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   207
+.Fl r
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   208
+option, the value 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   209
+.Cm off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   210
+is used as default.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   211
+If set to
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   212
+.Cm on
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   213
+the proxy will always use port 20 for active data connections.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   214
+.It ftp-proxy/tag
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   215
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   216
+.Fl T
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   217
+option, which tags data connection packets with the desired tag.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   218
+.It ftp-proxy/timeout
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   219
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   220
+.Fl t
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   221
+option, which specifies the number of seconds a FTP command session
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   222
+may remain idle.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   223
+The maximum value is 86400 seconds (1 day).
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   224
+.It ftp-proxy/log
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   225
+This property sets the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   226
+.Fl v
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   227
+option.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   228
+There are three possible values.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   229
+For
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   230
+.Cm off ,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   231
+no log action will be added to FTP data connection rules created
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   232
+by the proxy.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   233
+The value
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   234
+.Cm on
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   235
+adds the log action.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   236
+Specifying the value
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   237
+.Cm all
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   238
+adds the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   239
+.Sq log all
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   240
+action.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   241
+.El
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   242
+.Pp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   243
+.Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   244
+on Solaris comes with two extra options, which make service configuration easier.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   245
+.Bl -tag -offset 3n -compact
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   246
+.It Fl c Ar smf-instance
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   247
+Shows/changes settings kept in
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   248
+.Xr smf 7
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   249
+repository for the specified
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   250
+.Ar smf-instance
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   251
+of the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   252
+.Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   253
+service.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   254
+.It Fl C Ar smf-instance
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   255
+Creates a new instance of the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   256
+.Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   257
+service and uses
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   258
+.Ar smf-instance
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   259
+for its name.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   260
+.El
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   261
+.Pp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   262
+To tell proxy service to bind the listen socket to 192.168.1.2 address,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   263
+one has to use the command below:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   264
+.Bd -literal -offset indent
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   265
+ftp-proxy -c default -b 192.168.1.2
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   266
+.Ed
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   267
+.Pp 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   268
+To create anonymous-only proxy listening to port 8821, bound to
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   269
+192.168.1.2, one uses the command as follows:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   270
+.Bd -literal -offset indent
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   271
+ftp-proxy -C anonymous -b 192.168.1.2 -p 8821 -A on
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   272
+.Ed
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   273
+.Pp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   274
+To switch the anonymous instance created above to the regular mode (disable
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   275
+anonymous-only), one uses the command like this:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   276
+.Bd -literal -offset indent
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   277
+ftp-proxy -c anonymous -A off
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   278
+.Ed
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   279
+.Pp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   280
+To display the anonymous instance configuration use the command as follows:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   281
+.Bd -literal -offset indent
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   282
+ftp-proxy -c anonymous
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   283
+.Ed
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   284
+To manage the service, you need the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   285
+.Sy solaris.smf.manage.network.firewall
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   286
+authorization.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   287
+To configure service instances, you need the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   288
+.Sy solaris.smf.value.network.firewall
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   289
+authorization.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   290
+Both these authorizations are granted through the Network Firewall Management
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   291
+profile.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   292
+To create new service instances, you need the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   293
+.Sy solaris.smf.modify
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   294
+authorization.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   295
 .Sh SEE ALSO
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   296
-.Xr pf.conf 5
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   297
+.Xr pf.conf 5 ,
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   298
+.Xr smf 7 ,
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   299
+.Xr svccfg (1M)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   300
 .Sh CAVEATS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   301
 .Pp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   302
 Negotiated data connection ports below 1024 are not allowed.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   303
@@ -177,3 +353,8 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   304
 The negotiated IP address for active modes is ignored for security
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   305
 reasons.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   306
 This makes third party file transfers impossible.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   307
+.Pp
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   308
+.Nm
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   309
+runs as the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   310
+.Dq daemon
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   311
+user.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   312
diff -Naur ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/ftp-proxy.c ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/ftp-proxy.c
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   313
--- ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/ftp-proxy.c	2016-02-10 04:12:16.600723376 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   314
+++ ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/ftp-proxy.c	2016-02-24 06:58:52.001603474 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   315
@@ -46,6 +46,7 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   316
 #include <sys/random.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   317
 #include <inttypes.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   318
 #include <priv.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   319
+#include "smf-config.h"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   320
 #endif	/* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   321
 #include <syslog.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   322
 #include <unistd.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   323
@@ -62,8 +63,10 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   324
 #define NTOP_BUFS	3
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   325
 #define TCP_BACKLOG	10
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   326
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   327
+#ifndef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   328
 #define CHROOT_DIR	"/var/empty"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   329
 #define NOPRIV_USER	"proxy"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   330
+#endif	/* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   331
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   332
 /* pfctl standard NAT range. */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   333
 #define PF_NAT_PROXY_PORT_LOW	50001
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   334
@@ -97,6 +100,28 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   335
 #define	DIVERT_MODULE_NAME "pf_divertf"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   336
 #endif	/* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   337
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   338
+#ifdef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   339
+#define	FTP_PROXY_GETOPTSTR	"A:a:b:D:dm:P:p:R:r:T:t:v:c:C:X:"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   340
+#define	SET_CFGFLAG(_set_, _f_)	(_set_)	|= (_f_)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   341
+#define	SKIP_CHK(_x_)	((_x_) == NULL)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   342
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   343
+#define DROP_PRIV(priv)						\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   344
+	do {							\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   345
+		if (priv_set(PRIV_OFF, PRIV_PERMITTED, (priv),	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   346
+		    NULL) != 0) {				\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   347
+			fprintf(stderr,				\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   348
+			    "Unable to drop privileges.\n");	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   349
+			exit (-1);				\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   350
+		}						\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   351
+	} while (0)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   352
+#else /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   353
+#define	FTP_PROXY_GETOPTSTR	"6Aa:b:D:dm:P:p:q:R:rT:t:v"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   354
+#define	SET_CFGFLAG(_set_, _f_)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   355
+#define	SKIP_CHK(_x_)	(1)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   356
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   357
+#define DROP_PRIV(priv)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   358
+#endif	/* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   359
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   360
 enum { CMD_NONE = 0, CMD_PORT, CMD_EPRT, CMD_PASV, CMD_EPSV };
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   361
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   362
 struct session {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   363
@@ -127,7 +152,9 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   364
 int	client_parse_anon(struct session *s);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   365
 int	client_parse_cmd(struct session *s);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   366
 void	client_read(struct bufferevent *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   367
+#ifndef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   368
 int	drop_privs(void);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   369
+#endif /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   370
 void	end_session(struct session *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   371
 void	exit_daemon(void);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   372
 int	get_line(char *, size_t *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   373
@@ -348,6 +375,7 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   374
 	} while (read == buf_avail);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   375
 }
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   376
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   377
+#ifndef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   378
 int
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   379
 drop_privs(void)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   380
 {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   381
@@ -363,9 +391,9 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   382
 	    setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) != 0 ||
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   383
 	    setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) != 0)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   384
 		return (0);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   385
-
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   386
 	return (1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   387
 }
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   388
+#endif /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   389
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   390
 void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   391
 end_session(struct session *s)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   392
@@ -561,9 +589,6 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   393
 	logmsg(LOG_DEBUG, "#%d accepted connection from %s", s->id,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   394
 	    sock_ntop(client_sa));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   395
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   396
-	/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   397
-	 * Find out the real server and port that the client wanted.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   398
-	 */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   399
 	len = sizeof(struct sockaddr_storage);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   400
 	if (getsockname(s->client_fd, server_sa, &len) < 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   401
 		logmsg(LOG_CRIT, "#%d getsockname failed: %s", s->id,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   402
@@ -770,6 +795,13 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   403
 	struct event ev_sighup, ev_sigint, ev_sigterm;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   404
 	int ch, error, listenfd, on;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   405
 	const char *errstr;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   406
+#ifdef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   407
+	const char	*smf_instance = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   408
+	int	smf_create = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   409
+	int	cfg_flags = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   410
+#endif	/* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   411
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   412
+	DROP_PRIV(PRIV_PROC_EXEC);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   413
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   414
 	/* Defaults. */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   415
 	anonymous_only	= 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   416
@@ -792,7 +824,8 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   417
 	id_count	= 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   418
 	session_count	= 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   419
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   420
-	while ((ch = getopt(argc, argv, "6Aa:b:D:dm:P:p:q:R:rT:t:v")) != -1) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   421
+	while ((ch = getopt(argc, argv,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   422
+	    FTP_PROXY_GETOPTSTR)) != -1) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   423
 		switch (ch) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   424
 #ifndef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   425
 		case '6':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   426
@@ -800,33 +833,49 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   427
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   428
 #endif	/* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   429
 		case 'A':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   430
+#ifdef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   431
+			if (strcasecmp(optarg, "off") == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   432
+				anonymous_only = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   433
+			} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   434
+				anonymous_only = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   435
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   436
+#else /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   437
 			anonymous_only = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   438
+#endif	/* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   439
+			SET_CFGFLAG(cfg_flags, SMF_CFG_ANON_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   440
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   441
 		case 'a':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   442
 			fixed_proxy = optarg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   443
+			SET_CFGFLAG(cfg_flags, SMF_CFG_FIXED_PROXY_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   444
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   445
 		case 'b':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   446
 			listen_ip = optarg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   447
+			SET_CFGFLAG(cfg_flags, SMF_CFG_LISTEN_ADDR_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   448
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   449
 		case 'D':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   450
 			loglevel = strtonum(optarg, LOG_EMERG, LOG_DEBUG,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   451
 			    &errstr);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   452
 			if (errstr)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   453
 				errx(1, "loglevel %s", errstr);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   454
+			SET_CFGFLAG(cfg_flags, SMF_CFG_DEBUG_LEVEL_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   455
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   456
 		case 'd':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   457
 			daemonize = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   458
+			DROP_PRIV(PRIV_PROC_FORK);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   459
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   460
 		case 'm':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   461
 			max_sessions = strtonum(optarg, 1, 500, &errstr);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   462
 			if (errstr)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   463
 				errx(1, "max sessions %s", errstr);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   464
+			SET_CFGFLAG(cfg_flags, SMF_CFG_MAX_SESSION_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   465
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   466
 		case 'P':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   467
 			fixed_server_port = optarg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   468
+			SET_CFGFLAG(cfg_flags, SMF_CFG_FIXED_SERVER_PORT_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   469
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   470
 		case 'p':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   471
 			listen_port = optarg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   472
+			SET_CFGFLAG(cfg_flags, SMF_CFG_LISTEN_PORT_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   473
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   474
 #ifndef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   475
 		case 'q':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   476
@@ -837,40 +886,83 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   477
 #endif	/* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   478
 		case 'R':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   479
 			fixed_server = optarg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   480
+			SET_CFGFLAG(cfg_flags, SMF_CFG_FIXED_SERVER_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   481
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   482
 		case 'r':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   483
+#ifdef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   484
+			if (strcasecmp(optarg, "off") == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   485
+				rfc_mode = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   486
+			} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   487
+				rfc_mode = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   488
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   489
+			SET_CFGFLAG(cfg_flags, SMF_CFG_RFC_MODE_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   490
+#else /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   491
 			rfc_mode = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   492
+#endif	/* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   493
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   494
 		case 'T':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   495
 			if (strlen(optarg) >= PF_TAG_NAME_SIZE)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   496
 				errx(1, "tagname too long");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   497
 			tagname = optarg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   498
+			SET_CFGFLAG(cfg_flags, SMF_CFG_TAG_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   499
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   500
 		case 't':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   501
 			timeout = strtonum(optarg, 0, 86400, &errstr);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   502
 			if (errstr)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   503
 				errx(1, "timeout %s", errstr);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   504
+			SET_CFGFLAG(cfg_flags, SMF_CFG_TIMEOUT_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   505
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   506
 		case 'v':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   507
+#ifdef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   508
+			if (strcasecmp(optarg, "all") == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   509
+				verbose = 2;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   510
+			} else if (strcasecmp(optarg, "on") == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   511
+				verbose = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   512
+			} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   513
+				verbose = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   514
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   515
+			SET_CFGFLAG(cfg_flags, SMF_CFG_LOG_SET);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   516
+#else /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   517
 			verbose++;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   518
 			if (verbose > 2)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   519
 				usage();
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   520
+#endif /* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   521
+			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   522
+#ifdef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   523
+		case 'C':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   524
+			smf_create = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   525
+			/* FALLTHRU */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   526
+		case 'c':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   527
+			smf_instance = optarg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   528
+			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   529
+		case 'X':
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   530
+			FTP_PROXY_ANCHOR = optarg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   531
 			break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   532
+#endif	/* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   533
 		default:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   534
 			usage();
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   535
 		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   536
 	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   537
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   538
+#ifdef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   539
+	if ((FTP_PROXY_ANCHOR == NULL) && (smf_instance == NULL)) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   540
+		fprintf(stderr, "The ftp-proxy can be started only via SMF.\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   541
+		exit (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   542
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   543
+#endif /* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   544
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   545
 	if (listen_ip == NULL)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   546
 		listen_ip = ipv6_mode ? "::1" : "127.0.0.1";
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   547
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   548
+#ifndef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   549
 	/* Check for root to save the user from cryptic failure messages. */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   550
 	if (getuid() != 0)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   551
 		errx(1, "needs to start as root");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   552
+#endif	/* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   553
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   554
 	/* Raise max. open files limit to satisfy max. sessions. */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   555
 	rlp.rlim_cur = rlp.rlim_max = (2 * max_sessions) + 10;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   556
-	if (setrlimit(RLIMIT_NOFILE, &rlp) == -1)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   557
+	if (SKIP_CHK(smf_instance) && (setrlimit(RLIMIT_NOFILE, &rlp) == -1))
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   558
 		err(1, "setrlimit");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   559
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   560
 	if (fixed_proxy) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   561
@@ -895,7 +987,12 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   562
 		freeaddrinfo(res);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   563
 	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   564
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   565
+#ifdef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   566
+	/* Steps not needed when we are just working with SMF. */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   567
+	if (fixed_server && (smf_instance == NULL)) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   568
+#else /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   569
 	if (fixed_server) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   570
+#endif /* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   571
 		memset(&hints, 0, sizeof hints);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   572
 		hints.ai_family = ipv6_mode ? AF_INET6 : AF_INET;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   573
 		hints.ai_socktype = SOCK_STREAM;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   574
@@ -917,6 +1014,61 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   575
 		freeaddrinfo(res);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   576
 	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   577
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   578
+#ifdef	_SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   579
+	if (smf_instance != NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   580
+		/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   581
+		 * If we are creating new instance, we will use default
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   582
+		 * values for properties.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   583
+		 */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   584
+		if (smf_create == 1) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   585
+			cfg_flags = -1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   586
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   587
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   588
+		if (cfg_flags == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   589
+			if (smf_print_ftpcfg(smf_instance) != 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   590
+				exit (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   591
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   592
+			exit(0);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   593
+		} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   594
+			smf_ftp_cfg.cfg_set = cfg_flags;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   595
+			smf_ftp_cfg.cfg_anonymous_only = anonymous_only;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   596
+			smf_ftp_cfg.cfg_listen_addr = SMF_COPY_STR(listen_ip);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   597
+			smf_ftp_cfg.cfg_listen_port = strtonum(listen_port, 1,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   598
+			    65535, NULL);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   599
+			if (smf_ftp_cfg.cfg_listen_port == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   600
+				fprintf(stderr,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   601
+				    "Invalid listen port specified.\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   602
+				exit (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   603
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   604
+			smf_ftp_cfg.cfg_debug_level = loglevel;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   605
+			smf_ftp_cfg.cfg_max_sessions = max_sessions;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   606
+			smf_ftp_cfg.cfg_fixed_server =
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   607
+			    SMF_COPY_STR(fixed_server);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   608
+			smf_ftp_cfg.cfg_fixed_server_port = strtonum(
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   609
+			    fixed_server_port, 1, 65535, NULL);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   610
+			if (smf_ftp_cfg.cfg_fixed_server_port == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   611
+				fprintf(stderr,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   612
+				    "Invalid fixed server port specified.\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   613
+				exit (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   614
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   615
+			smf_ftp_cfg.cfg_rfc_mode = rfc_mode;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   616
+			smf_ftp_cfg.cfg_tag = SMF_COPY_STR(tagname);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   617
+			smf_ftp_cfg.cfg_timeout = timeout;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   618
+			smf_ftp_cfg.cfg_log = verbose;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   619
+			smf_ftp_cfg.cfg_fixed_proxy = SMF_COPY_STR(fixed_proxy);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   620
+			if (smf_write_ftpcfg(smf_instance, smf_create) == -1) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   621
+				err(1, "...Giving up");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   622
+			} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   623
+				printf("configuration for\n\t%s (%s:%s)\nhas been saved\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   624
+				    smf_instance,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   625
+				    BASE_FMRI,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   626
+				    smf_instance);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   627
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   628
+			exit(0);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   629
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   630
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   631
+#endif	/* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   632
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   633
 	/* Setup listener. */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   634
 	memset(&hints, 0, sizeof hints);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   635
 	hints.ai_flags = AI_NUMERICHOST | AI_PASSIVE;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   636
@@ -946,19 +1098,21 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   637
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   638
 	/* Initialize pf. */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   639
 	init_filter(qname, tagname, verbose);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   640
-
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   641
 	if (daemonize) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   642
 		if (daemon(0, 0) == -1)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   643
 			err(1, "cannot daemonize");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   644
+		DROP_PRIV(PRIV_PROC_FORK);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   645
 		openlog(__progname, LOG_PID | LOG_NDELAY, LOG_DAEMON);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   646
 	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   647
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   648
 	/* Use logmsg for output from here on. */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   649
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   650
+#ifndef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   651
 	if (!drop_privs()) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   652
 		logmsg(LOG_ERR, "cannot drop privileges: %s", strerror(errno));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   653
 		exit(1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   654
 	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   655
+#endif /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   656
 	
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   657
 	event_init();
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   658
 
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   659
@@ -1327,9 +1481,16 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   660
 void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   661
 usage(void)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   662
 {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   663
+#ifdef _SOLARIS_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   664
+	fprintf(stderr, "usage: %s [-A on | off] [-a address] [-b address]"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   665
+	    " [{-c | -C} instance] [-D level] [-m maxsessions]\n                 [-P port]"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   666
+	    " [-p port] [-R address] [-r on | off] [-T tag]\n"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   667
+            "                 [-t timeout] [-v all | on | off]\n", __progname);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   668
+#else /* !_SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   669
 	fprintf(stderr, "usage: %s [-6Adrv] [-a address] [-b address]"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   670
 	    " [-D level] [-m maxsessions]\n                 [-P port]"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   671
 	    " [-p port] [-q queue] [-R address] [-T tag]\n"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   672
 	    "                 [-t timeout]\n", __progname);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   673
+#endif /* _SOLARIS_ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   674
 	exit(1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   675
 }
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   676
diff -Naur ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/smf-config.c ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/smf-config.c
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   677
--- ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/smf-config.c	1969-12-31 16:00:00.000000000 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   678
+++ ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/smf-config.c	2016-02-24 08:45:36.636917450 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   679
@@ -0,0 +1,822 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   680
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   681
+ * CDDL HEADER START
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   682
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   683
+ * The contents of this file are subject to the terms of the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   684
+ * Common Development and Distribution License (the "License").
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   685
+ * You may not use this file except in compliance with the License.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   686
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   687
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   688
+ * or http://www.opensolaris.org/os/licensing.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   689
+ * See the License for the specific language governing permissions
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   690
+ * and limitations under the License.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   691
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   692
+ * When distributing Covered Code, include this CDDL HEADER in each
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   693
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   694
+ * If applicable, add the following below this CDDL HEADER, with the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   695
+ * fields enclosed by brackets "[]" replaced with your own identifying
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   696
+ * information: Portions Copyright [yyyy] [name of copyright owner]
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   697
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   698
+ * CDDL HEADER END
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   699
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   700
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   701
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   702
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   703
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   704
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   705
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   706
+#include <string.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   707
+#include <strings.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   708
+#include <stdlib.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   709
+#include <err.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   710
+#include <stdarg.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   711
+#include <stdio.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   712
+#include <libscf.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   713
+#include <stddef.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   714
+#include <libscf_priv.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   715
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   716
+#include "smf-config.h"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   717
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   718
+/* #include <net/pfvar.h> */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   719
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   720
+#define	FTP_PROXY_PG	"ftp-proxy"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   721
+#define FTP_PROXY_PROP_VALUE_AUTH	"value_authorization"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   722
+#define FTP_PROXY_PROP_ACTION_AUTH	"action_authorization"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   723
+#define FTP_PROXY_VALUE_AUTH	"solaris.smf.value.network.firewall"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   724
+#define FTP_PROXY_MANAGE_AUTH	"solaris.smf.manage.network.firewall"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   725
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   726
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   727
+ * CHKASCIIZ()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   728
+ * Macro checks if _s_ is ASCIIZ (not NULL, not empty), if _s_ is not empty
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   729
+ * string, then _p_ is returned.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   730
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   731
+ * Arguments:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   732
+ *	_s_	- ASCIIZ string to be tested
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   733
+ *	_p_	- string to be returned when _s_ is not NULL or empty
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   734
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   735
+ * Returns:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   736
+ *	_p_ if _s_ is not NULL/empty, otherwise the empty string is returned.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   737
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   738
+#define	CHKASCIIZ(_s_, _p_)	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   739
+	((((_s_) == NULL) || (_s_[0] == '\0')) ? "" : (_p_))
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   740
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   741
+#define	SKIP_PROP(_pv_)		\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   742
+	((strcmp((_pv_)->pv_prop, "action_authorization") == 0) || \
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   743
+	(strcmp((_pv_)->pv_prop, "value_authorization") == 0))
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   744
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   745
+#define	STRIP_SVC(_x_)	((_x_) + (sizeof ("svc:/") - 1))
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   746
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   747
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   748
+ * smf_ftp_cfg
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   749
+ * FTP proxy configuration container.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   750
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   751
+smf_ftppx_cfg_t	smf_ftp_cfg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   752
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   753
+#define	SMF_OPT_OPTIONAL	0
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   754
+#define	SMF_OPT_MANDATORY	1
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   755
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   756
+ * X-macro table.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   757
+ * Columns are as follows:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   758
+ * 	value key/index 
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   759
+ *	smf(7) property name name
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   760
+ *	member in smf_ftppx_cfg_t structure
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   761
+ *	function which converts ASCIIZ to member type in smf_ftppx_cfg_t
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   762
+ *	function which converts member in smf_ftppx_cfg_t to ASCIIZ
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   763
+ *	optional/mandatory status
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   764
+ *	property type
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   765
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   766
+#define	X_CFG_PROPS	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   767
+	X(SMF_ANON, "anonymous-only", cfg_anonymous_only, on_to_one,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   768
+	    one_to_on, SMF_OPT_OPTIONAL, SCF_TYPE_ASTRING)		\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   769
+	X(SMF_FIXED_PROXY, "proxy-NAT-address",	cfg_fixed_proxy,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   770
+	    nop_in, nop_out, SMF_OPT_MANDATORY, SCF_TYPE_ASTRING)	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   771
+	X(SMF_LISTEN_ADDR, "proxy-listen-address", cfg_listen_addr,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   772
+	    nop_in, nop_out, SMF_OPT_MANDATORY, SCF_TYPE_ASTRING)	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   773
+	X(SMF_LISTEN_PORT, "listen-port",	cfg_listen_port,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   774
+	    int_in, int_out, SMF_OPT_OPTIONAL, SCF_TYPE_INTEGER)	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   775
+	X(SMF_DEBUG_LEVEL, "debug-level", cfg_debug_level, int_in,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   776
+	    int_out, SMF_OPT_OPTIONAL, SCF_TYPE_INTEGER)		\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   777
+	X(SMF_MAX_SESSIONS, "maxsessions", cfg_max_sessions,		\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   778
+	    int_in, int_out, SMF_OPT_OPTIONAL,				\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   779
+	    SCF_TYPE_INTEGER)						\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   780
+	X(SMF_RFC_MODE, "always-use-ftp-data-port", cfg_rfc_mode,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   781
+	    on_to_one, one_to_on, SMF_OPT_OPTIONAL, SCF_TYPE_ASTRING)	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   782
+	X(SMF_FIXED_SERVER_PORT, "reverse-mode-port", 			\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   783
+	    cfg_fixed_server_port, int_in, int_out, SMF_OPT_OPTIONAL,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   784
+	    SCF_TYPE_INTEGER)						\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   785
+	X(SMF_FIXED_SERVER, "reverse-mode-address", cfg_fixed_server,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   786
+	    nop_in, nop_out, SMF_OPT_OPTIONAL, SCF_TYPE_ASTRING)	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   787
+	X(SMF_TAG, "tag", cfg_tag, nop_in, nop_out, SMF_OPT_OPTIONAL,	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   788
+	    SCF_TYPE_ASTRING)						\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   789
+	X(SMF_TIMEOUT, "timeout", cfg_timeout, int_in, int_out,		\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   790
+	    SMF_OPT_OPTIONAL, SCF_TYPE_INTEGER)				\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   791
+	X(SMF_LOG, "log", cfg_log, log_to_int, int_to_log,		\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   792
+	    SMF_OPT_OPTIONAL, SCF_TYPE_ASTRING)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   793
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   794
+static void nop_in(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   795
+static void nop_out(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   796
+static void int_in(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   797
+static void int_out(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   798
+static void on_to_one(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   799
+static void one_to_on(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   800
+static void str_to_int(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   801
+static void int_to_str(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   802
+static void str_to_uint(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   803
+static void uint_to_str(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   804
+static void log_to_int(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   805
+static void int_to_log(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   806
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   807
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   808
+ * smf_keys
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   809
+ * Keys (indexes) to `smf_propnames` dictionary.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   810
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   811
+#define	X(_const_, _propname_, _decl_, _conv_in_, _conv_out_, _mandatory_, \
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   812
+    _type_) _const_,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   813
+enum smf_keys {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   814
+	X_CFG_PROPS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   815
+	SMF_CFG_PROP_COUNT
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   816
+};
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   817
+#undef	X
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   818
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   819
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   820
+ * smf_propnames
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   821
+ * It's an array (dictionary), which translates property code (SMF_*) to
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   822
+ * property value name found `ftp-proxy` property group.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   823
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   824
+#define	X(_const_, _propname_, _decl_, _conv_in_, _conv_out_, _mandatory_, \
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   825
+    _type_) _propname_,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   826
+static const char *smf_propnames[] = {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   827
+	X_CFG_PROPS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   828
+	NULL
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   829
+};
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   830
+#undef	X
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   831
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   832
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   833
+ * smf_cfg_offsets
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   834
+ * Table of smf_ftppx_cfg_t members.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   835
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   836
+#define	X(_const_, _propname_, _decl_, _conv_in_, _conv_out_, _mandatory_, \
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   837
+    _type_) offsetof(smf_ftppx_cfg_t, _decl_),
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   838
+static size_t smf_cfg_offsets[] = {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   839
+	X_CFG_PROPS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   840
+	sizeof (smf_ftppx_cfg_t)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   841
+};
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   842
+#undef	X
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   843
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   844
+typedef void(*conv_in_f)(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   845
+typedef void(*conv_out_f)(void *, void *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   846
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   847
+ * smf_convert_in
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   848
+ * Table of conversion functions, which convert particular smf_ftppx_cfg_t
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   849
+ * member into ASCIIZ.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   850
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   851
+#define	X(_const_, _propname_, _decl_, _conv_in_, _conv_out_, _mandatory_, \
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   852
+    _type_) _conv_in_,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   853
+static conv_in_f smf_conv_in[] = {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   854
+	X_CFG_PROPS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   855
+	NULL
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   856
+};
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   857
+#undef	X
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   858
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   859
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   860
+ * smf_conv_out
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   861
+ * Table of conversion functions, which convert ASCIIZ fetched from smf(7)
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   862
+ * repository to member of smf_ftppx_cfg_t structure.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   863
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   864
+#define	X(_const_, _propname_, _decl_, _conv_in_, _conv_out_, _mandatory_, \
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   865
+    _type_) _conv_out_,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   866
+static conv_out_f smf_conv_out[] = {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   867
+	X_CFG_PROPS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   868
+	NULL
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   869
+};
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   870
+#undef	X
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   871
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   872
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   873
+ * smf_mandatory
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   874
+ * Table marks configuration parameters, which must be defined by admin,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   875
+ * before the service is enabled for the first time.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   876
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   877
+#define	X(_const_, _propname_, _decl_, _conv_in_, _conv_out_, _mandatory_, \
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   878
+    _type_) _mandatory_,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   879
+static int smf_mandatory[] = {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   880
+	X_CFG_PROPS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   881
+	0
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   882
+};
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   883
+#undef	X
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   884
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   885
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   886
+ * smf_type
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   887
+ * Table of types of SMF properties.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   888
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   889
+#define	X(_const_, _propname_, _decl_, _conv_in_, _conv_out_, _mandatory_, \
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   890
+    _type_) _type_,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   891
+static int smf_type[] = {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   892
+	X_CFG_PROPS
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   893
+	0
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   894
+};
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   895
+#undef	X
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   896
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   897
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   898
+ * ftp-proxy property group properties
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   899
+ * +1 for NULL termination.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   900
+ * +1 for value_authorization
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   901
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   902
+static scf_propvec_t	prop_vec[SMF_CFG_PROP_COUNT + 1 + 1];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   903
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   904
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   905
+ * general property group properties
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   906
+ * +1 for NULL termination.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   907
+ * +2 for value_authorization/action_authorization
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   908
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   909
+static scf_propvec_t	gen_prop_vec[1 + 2];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   910
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   911
+static int atexit_set = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   912
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   913
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   914
+ * Conversion routines from smf_ftp_cfg structure to prop_vec member and vice
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   915
+ * versa.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   916
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   917
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   918
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   919
+ * nop_in()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   920
+ * Dummy conversion ASCIIZ to ASCIIZ, no allocation happens. Used when
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   921
+ * configuration is from smf(7).
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   922
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   923
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   924
+nop_in(void *asciiz, void *result)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   925
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   926
+	*((char **)result) = asciiz;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   927
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   928
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   929
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   930
+ * nop_out()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   931
+ * Dummy conversion ASCIIZ to ASCIIZ, function allocates memory for result by
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   932
+ * strdup(3C). Used when configuration is written to smf(7) repository.
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   933
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   934
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   935
+nop_out(void *asciiz, void *val)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   936
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   937
+	*((char **)asciiz) = strdup(*(char **)val);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   938
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   939
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   940
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   941
+ * int_in()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   942
+ * Dummy conversion of int64_t. No allocation happens. Used when reading
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   943
+ * values from smf.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   944
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   945
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   946
+int_in(void *in, void *out) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   947
+	*((int64_t *)out) = *((int64_t *)in);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   948
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   949
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   950
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   951
+ * int_out()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   952
+ * Dummy conversion of int64_t, storing into a newly allocated memory.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   953
+ * Used when storing values to smf repository.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   954
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   955
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   956
+int_out(void *out, void *in) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   957
+	int64_t **out_ = (int64_t **)out;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   958
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   959
+	*out_ = malloc(sizeof (int64_t));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   960
+	if (*out_ != NULL)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   961
+		**out_ = *((int64_t *)in);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   962
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   963
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   964
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   965
+ * on_to_one()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   966
+ * Function converts ASCIIZ value "on" to 1. Anything else yeilds a 0. Used to
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   967
+ * read configuration from smf(7).
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   968
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   969
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   970
+on_to_one(void *asciiz, void *result)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   971
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   972
+	*((int *)result) = ((strcasecmp((char *)asciiz, "on") == 0) ? 1 : 0);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   973
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   974
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   975
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   976
+ * one_to_on()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   977
+ * Function converts 0 to ASCIIZ string "off", anything else than 0 yeilds to
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   978
+ * "on". Used when configuration ie being written to smf(7). Function also
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   979
+ * allocates memory for resulting string using strdup(3C).
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   980
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   981
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   982
+one_to_on(void *asciiz, void *val)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   983
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   984
+	if (*((int *)val) == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   985
+		*((char **)asciiz) = strdup("off");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   986
+	} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   987
+		*((char **)asciiz) = strdup("on");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   988
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   989
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   990
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   991
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   992
+ * str_to_int()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   993
+ * Function converts integer represented as ASCIIZ to int using atoi(3C).  Used
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
   994
+ * when configuration is read from smf(7).
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   995
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   996
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   997
+str_to_int(void *asciiz, void *result)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   998
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
   999
+	*((int *)result) = atoi((char *)asciiz);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1000
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1001
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1002
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1003
+ * int_to_str()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1004
+ * Function converts integer number to ASCIIZ using asprintf(3C). Used when
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
  1005
+ * configuration is being stored to smf(7). Memory for results get allocated by
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1006
+ * asprintf(3C).
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1007
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1008
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1009
+int_to_str(void *asciiz, void *val)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1010
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1011
+	(void) asprintf((char **)asciiz, "%d", *((int *)val));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1012
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1013
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1014
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1015
+ * str_to_uint()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1016
+ * Function converts unsigned integer represented as ASCIIZ to int using
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
  1017
+ * atoi(3C). Used when configuration is being read from smf(7) repository.
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1018
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1019
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1020
+str_to_uint(void *asciiz, void *result)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1021
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1022
+	*((unsigned int *)result) = (unsigned int) atoi((char *)asciiz);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1023
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1024
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1025
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1026
+ * uint_to_str()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1027
+ * Function converts unsigned integer to ASCIIZ using asprintf(3C).  Used when
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
  1028
+ * configuration is written to smf(7). Memory for result is allocated by
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1029
+ * asprintf(3C).
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1030
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1031
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1032
+uint_to_str(void *asciiz, void *val)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1033
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1034
+	(void) asprintf((char **)asciiz, "%u", *((int *)val));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1035
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1036
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1037
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1038
+ * log_to_int()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1039
+ * Function encodes ASCIIZ value for log property to numeric code.  String
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1040
+ * "all" gets converted to 2, string "on" to 1, anything else yeilds to 0.
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
  1041
+ * It's used when configuration is being read from smf(7) repository.
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1042
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1043
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1044
+log_to_int(void *asciiz, void *result)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1045
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1046
+	if (strcasecmp((char *)asciiz, "all") == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1047
+		*((int *)result) = 2;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1048
+	} else if (strcasecmp((char *)asciiz, "on") == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1049
+		*((int *)result) = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1050
+	} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1051
+		*((int *)result) = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1052
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1053
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1054
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1055
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1056
+ * int_to_log()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1057
+ * Function encodes value of log property to its numeric representation.  2
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1058
+ * gets encoded to "all", 1 results to "on", anything else results to off.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1059
+ * The memory for result is allocated by strdup(3C).
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1060
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1061
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1062
+int_to_log(void *asciiz, void *val)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1063
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1064
+	switch (*((int *)val)) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1065
+	case	2:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1066
+		*((char **)asciiz) = strdup("all");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1067
+		break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1068
+	case	1:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1069
+		*((char **)asciiz) = strdup("on");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1070
+		break;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1071
+	default:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1072
+		*((char **)asciiz) = strdup("off");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1073
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1074
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1075
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1076
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1077
+clear_prop_vec2(scf_propvec_t *prop_vec_ptr, int count)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1078
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1079
+	while (count--) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1080
+		prop_vec_ptr->pv_prop = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1081
+		prop_vec_ptr->pv_desc = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1082
+		prop_vec_ptr->pv_type = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1083
+		prop_vec_ptr->pv_aux = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1084
+		prop_vec_ptr->pv_mval = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1085
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1086
+		if (prop_vec_ptr->pv_ptr != NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1087
+			free(prop_vec_ptr->pv_ptr);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1088
+			prop_vec_ptr->pv_ptr = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1089
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1090
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1091
+		prop_vec_ptr++;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1092
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1093
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1094
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1095
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1096
+ * clear_prop_vec()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1097
+ * Function clears global variables `prop_vec` and `gen_prop_vec`,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1098
+ * which are vectors of properties.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1099
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1100
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1101
+clear_prop_vec()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1102
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1103
+	clear_prop_vec2(prop_vec,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1104
+	    sizeof (prop_vec) / sizeof (scf_propvec_t));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1105
+	clear_prop_vec2(gen_prop_vec,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1106
+	    sizeof (gen_prop_vec) / sizeof (scf_propvec_t));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1107
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1108
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1109
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1110
+ * cfg_to_prop_vec()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1111
+ * Function converts smf_ftp_cfg global variable, which holds configuration
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
  1112
+ * parsed from command line arguments, to prop_vec, which is a smf(7) friendly
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1113
+ * representation of proxy configuration.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1114
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1115
+ * Additionally, it populates gen_prop_vec to specify needed authorizations.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1116
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1117
+ * Returns 0 on success, -1 on out of memory error.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1118
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1119
+static int
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1120
+cfg_to_prop_vec(void)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1121
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1122
+	int		cfg_bit = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1123
+	int		i;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1124
+	scf_propvec_t	*prop_vec_ptr = prop_vec;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1125
+	conv_out_f	conv_func;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1126
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1127
+	clear_prop_vec();
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1128
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1129
+	for (i = 0; i < SMF_CFG_PROP_COUNT; i++) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1130
+		if ((smf_ftp_cfg.cfg_set & cfg_bit) != 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1131
+			prop_vec_ptr->pv_prop = smf_propnames[i];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1132
+			conv_func = smf_conv_out[i];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1133
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1134
+			conv_func(&prop_vec_ptr->pv_ptr,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1135
+			    ((char *)&smf_ftp_cfg + smf_cfg_offsets[i]));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1136
+			if (prop_vec_ptr->pv_ptr == NULL)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1137
+				return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1138
+			prop_vec_ptr->pv_type = smf_type[i];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1139
+			prop_vec_ptr++;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1140
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1141
+		cfg_bit = cfg_bit << 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1142
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1143
+	prop_vec_ptr->pv_type = SCF_TYPE_ASTRING;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1144
+	prop_vec_ptr->pv_prop = FTP_PROXY_PROP_VALUE_AUTH;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1145
+	prop_vec_ptr->pv_ptr = strdup(FTP_PROXY_VALUE_AUTH);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1146
+	prop_vec_ptr++;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1147
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1148
+	gen_prop_vec[0].pv_type = SCF_TYPE_ASTRING;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1149
+	gen_prop_vec[0].pv_prop = FTP_PROXY_PROP_VALUE_AUTH;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1150
+	gen_prop_vec[0].pv_ptr = strdup(FTP_PROXY_MANAGE_AUTH);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1151
+	gen_prop_vec[1].pv_type = SCF_TYPE_ASTRING;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1152
+	gen_prop_vec[1].pv_prop = FTP_PROXY_PROP_ACTION_AUTH;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1153
+	gen_prop_vec[1].pv_ptr = strdup(FTP_PROXY_MANAGE_AUTH);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1154
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1155
+	return (0);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1156
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1157
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1158
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1159
+ * prop_vec_to_cfg()
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1160
+ * Converts global variable `prop_vec` to `smf_ftp_cfg` global variable,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1161
+ * which is understood by main().
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1162
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1163
+static void
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1164
+prop_vec_to_cfg(void)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1165
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1166
+	int		i;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1167
+	scf_propvec_t	*prop_vec_ptr = prop_vec;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1168
+	conv_in_f	conv_func;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1169
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1170
+	for (i = 0; i < SMF_CFG_PROP_COUNT; i++, prop_vec_ptr++) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1171
+		if (SKIP_PROP(prop_vec_ptr)) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1172
+			/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1173
+			 * We have `hidden` properties: action/value smf
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1174
+			 * authorization. Those two are not kept in
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1175
+			 * smf_ftp_cfg.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1176
+			 *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1177
+			 * So we must to skip to next property in vector
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1178
+			 * without letting for loop to advance its counter, so
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1179
+			 * we compensate here by doing `i--`.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1180
+			 */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1181
+			i--;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1182
+			continue;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1183
+		};
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1184
+		conv_func = smf_conv_in[i];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1185
+		conv_func(prop_vec_ptr->pv_ptr,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1186
+		    ((char *)&smf_ftp_cfg + smf_cfg_offsets[i]));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1187
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1188
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1189
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1190
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1191
+ * smf_print_ftpcfg()
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
  1192
+ * Function loads ftpcfg from smf(7) repository and prints configuration to
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1193
+ * standard output. We use `scf_simple_prop_get(3SCF)`.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1194
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1195
+ * Returns 0 on success, -1 on error..
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1196
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1197
+int
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1198
+smf_print_ftpcfg(const char *smf_instance)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1199
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1200
+	scf_simple_prop_t	*prop;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1201
+	int			i;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1202
+	scf_propvec_t		*prop_vec_ptr = prop_vec;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1203
+	int			cfg_incomplete = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1204
+	char			*fmri;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1205
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1206
+	if (atexit_set == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1207
+		atexit(clear_prop_vec);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1208
+		bzero(&smf_ftp_cfg, sizeof (smf_ftppx_cfg_t));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1209
+		atexit_set = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1210
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1211
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1212
+	(void) asprintf(&fmri, "%s:%s", BASE_FMRI, smf_instance);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1213
+	if (fmri == NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1214
+		fprintf(stderr, "Out of memory.\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1215
+		return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1216
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1217
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1218
+	clear_prop_vec();
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1219
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1220
+	for (i = 0; i < SMF_CFG_PROP_COUNT; i++) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1221
+		prop = scf_simple_prop_get(NULL, fmri, FTP_PROXY_PG,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1222
+		    smf_propnames[i]);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1223
+		prop_vec_ptr->pv_prop = smf_propnames[i];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1224
+		prop_vec_ptr->pv_type = scf_simple_prop_type(prop);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1225
+		if (prop_vec_ptr->pv_type == -1) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1226
+			free(fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1227
+			fprintf(stderr, "Failed to get property type.\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1228
+			return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1229
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1230
+		if (prop_vec_ptr->pv_type != smf_type[i]) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1231
+			free(fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1232
+			fprintf(stderr, "Property %s has unexpected type.\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1233
+			    smf_propnames[i]);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1234
+			return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1235
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1236
+		if (prop == NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1237
+			/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1238
+			 * Property not defined, so we create a kind of
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1239
+			 * 'placeholder' with empty value.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1240
+			 *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1241
+			 * calloc() works well for both astring and integer.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1242
+			 */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1243
+			prop_vec_ptr->pv_ptr = calloc(1, sizeof (int64_t));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1244
+			cfg_incomplete |= smf_mandatory[i];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1245
+		} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1246
+			if (smf_type[i] == SCF_TYPE_ASTRING) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1247
+				char	*propval;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1248
+				propval = scf_simple_prop_next_astring(prop);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1249
+				if (propval == NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1250
+					propval = "";
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1251
+				}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1252
+				prop_vec_ptr->pv_ptr = strdup(propval);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1253
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1254
+				if (propval[0] == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1255
+					cfg_incomplete |= smf_mandatory[i];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1256
+				}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1257
+			} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1258
+				/* smf_type[i] == SCF_TYPE_INTEGER */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1259
+				int64_t	*propval;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1260
+				int64_t propval_;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1261
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1262
+				propval = scf_simple_prop_next_integer(prop);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1263
+				propval_ = (propval == NULL) ? (0) : (*propval);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1264
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1265
+				prop_vec_ptr->pv_ptr = malloc(sizeof (int64_t));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1266
+				if (prop_vec_ptr->pv_ptr != NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1267
+					*((int64_t *)prop_vec_ptr->pv_ptr) =
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1268
+					    propval_;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1269
+				}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1270
+				if (propval_ == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1271
+					cfg_incomplete |= smf_mandatory[i];
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1272
+				}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1273
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1274
+			scf_simple_prop_free(prop);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1275
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1276
+		if (prop_vec_ptr->pv_ptr == NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1277
+			free(fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1278
+			fprintf(stderr, "Out of memory.\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1279
+			return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1280
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1281
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1282
+		prop_vec_ptr++;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1283
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1284
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1285
+	printf("PF FTP proxy configuration:\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1286
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1287
+	prop_vec_ptr = prop_vec;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1288
+	for (i = 0; i < SMF_CFG_PROP_COUNT; i++) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1289
+		if (smf_type[i] == SCF_TYPE_ASTRING) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1290
+			const char *val = (const char *)prop_vec_ptr->pv_ptr;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1291
+			printf("\t- %s:\n\t\t%s\n", prop_vec_ptr->pv_prop,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1292
+			    ((val[0] == '\0') ?  "?? undefined ??" : val));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1293
+		} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1294
+			/* smf_type[i] == SCF_TYPE_INTEGER */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1295
+			int64_t val = *((int64_t *)prop_vec_ptr->pv_ptr);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1296
+			if (val == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1297
+				printf("\t- %s:\n\t\t%s\n", prop_vec_ptr->pv_prop,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1298
+			    	    "?? undefined ??");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1299
+			} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1300
+				printf("\t- %s:\n\t\t%d\n", prop_vec_ptr->pv_prop,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1301
+			    	    (int)val);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1302
+			}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1303
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1304
+		prop_vec_ptr++;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1305
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1306
+	if (cfg_incomplete) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1307
+		printf("\n\nConfiguration for %s is incomplete."
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1308
+		    " Service will not run.\n\n", fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1309
+	} else {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1310
+		prop_vec_to_cfg();
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1311
+		printf(
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1312
+		    "\n\n%s service is being launched using cmd line below\n\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1313
+		    fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1314
+		printf("ftp-proxy "
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1315
+		    "%s -a %s -b %s -p "
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1316
+		    "%d -D %d -m %d -t %d %s %s %s %.d %s %s %s %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1317
+		    ((smf_ftp_cfg.cfg_anonymous_only == 1) ? "-A on" : ""),
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1318
+		    smf_ftp_cfg.cfg_fixed_proxy,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1319
+		    smf_ftp_cfg.cfg_listen_addr,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1320
+		    (int)smf_ftp_cfg.cfg_listen_port,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1321
+		    (int)smf_ftp_cfg.cfg_debug_level,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1322
+		    (int)smf_ftp_cfg.cfg_max_sessions,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1323
+		    (int)smf_ftp_cfg.cfg_timeout,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1324
+		    CHKASCIIZ(smf_ftp_cfg.cfg_fixed_server, "-R"),
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1325
+		    CHKASCIIZ(smf_ftp_cfg.cfg_fixed_server,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1326
+			smf_ftp_cfg.cfg_fixed_server),
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1327
+		    (smf_ftp_cfg.cfg_fixed_server_port == 0) ? ("") : ("-P"),
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1328
+		    (int)smf_ftp_cfg.cfg_fixed_server_port,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1329
+		    ((smf_ftp_cfg.cfg_rfc_mode != 0) ? "-r on" : ""),
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1330
+		    CHKASCIIZ(smf_ftp_cfg.cfg_tag, "-T"),
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1331
+		    CHKASCIIZ(smf_ftp_cfg.cfg_tag, smf_ftp_cfg.cfg_tag),
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1332
+		    ((smf_ftp_cfg.cfg_log == 2) ? "-vv" :
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1333
+			((smf_ftp_cfg.cfg_log == 1) ? "-v" : "")));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1334
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1335
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1336
+	free(fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1337
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1338
+	return (0);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1339
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1340
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1341
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1342
+ * smf_create_ftp_instance()
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
  1343
+ * Function creates a new instance in smf(7) repository.
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1344
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1345
+static int
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1346
+smf_create_ftp_instance(const char *smf_instance)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1347
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1348
+	scf_handle_t	*h_scf = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1349
+	scf_scope_t	*scp_scf = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1350
+	scf_service_t	*svc_scf = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1351
+	scf_instance_t	*sin_scf = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1352
+	int	rv = -1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1353
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1354
+ 	h_scf = scf_handle_create(SCF_VERSION);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1355
+	if ((h_scf == NULL) || (scf_handle_bind(h_scf) == -1)) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1356
+		(void) fprintf(stderr, "scf_handle_bind() failed - %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1357
+		    scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1358
+		if (h_scf != NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1359
+			scf_handle_destroy(h_scf);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1360
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1361
+		return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1362
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1363
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1364
+	if ((scp_scf = scf_scope_create(h_scf)) == NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1365
+		(void) fprintf(stderr, "could not create scope - %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1366
+		    scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1367
+		goto unbind;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1368
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1369
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1370
+	if (scf_handle_get_local_scope(h_scf, scp_scf) != 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1371
+		(void) fprintf(stderr, "could not get scope - %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1372
+		    scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1373
+		goto scope_destroy;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1374
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1375
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1376
+	if ((svc_scf = scf_service_create(h_scf)) == NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1377
+		(void) fprintf(stderr, "could not create service - %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1378
+		    scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1379
+		goto scope_destroy;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1380
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1381
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1382
+	if ((sin_scf = scf_instance_create(h_scf)) == NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1383
+		(void) fprintf(stderr, "could not get instance handle - %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1384
+		    scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1385
+		goto service_destroy;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1386
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1387
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1388
+	if (scf_scope_get_service(scp_scf, STRIP_SVC(BASE_FMRI), svc_scf) !=
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1389
+	    SCF_SUCCESS) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1390
+		(void) fprintf(stderr, "could not select service (%s)\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1391
+		    scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1392
+		goto instance_destroy;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1393
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1394
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1395
+	if (scf_service_add_instance(svc_scf, smf_instance, sin_scf) != 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1396
+		(void) fprintf(stderr, "could not add %s instance - %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1397
+		    smf_instance, scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1398
+		goto instance_destroy;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1399
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1400
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1401
+	if (scf_instance_add_pg(sin_scf, "general", "framework", 0,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1402
+	    NULL) != SCF_SUCCESS) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1403
+		(void) fprintf(stderr,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1404
+		    "could not create property group - %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1405
+		    scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1406
+		goto instance_delete;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1407
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1408
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1409
+	if (scf_instance_add_pg(sin_scf, FTP_PROXY_PG, "application", 0,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1410
+	    NULL) != SCF_SUCCESS) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1411
+		(void) fprintf(stderr,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1412
+		    "could not create property group - %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1413
+		    scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1414
+		goto instance_delete;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1415
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1416
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1417
+	rv = 0;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1418
+	goto instance_destroy;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1419
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1420
+instance_delete:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1421
+	if (scf_instance_delete(sin_scf) != 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1422
+		fprintf(stderr, "Can't delete the newly created instance:");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1423
+		fprintf(stderr, "\t%s\n", scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1424
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1425
+instance_destroy:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1426
+	scf_instance_destroy(sin_scf);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1427
+service_destroy:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1428
+	scf_service_destroy(svc_scf);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1429
+scope_destroy:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1430
+	scf_scope_destroy(scp_scf);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1431
+unbind:
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1432
+	scf_handle_unbind(h_scf);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1433
+	scf_handle_destroy(h_scf);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1434
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1435
+	return (rv);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1436
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1437
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1438
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1439
+ * smf_write_ftpcfg()
5789
5183fa4a46ce 23107592 fping man page normalization work
Rich Burridge <rich.burridge@oracle.com>
parents: 5618
diff changeset
  1440
+ * Function writes proxy configuration to smf(7) repostiory.
5618
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1441
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1442
+int
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1443
+smf_write_ftpcfg(const char *smf_instance, int create)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1444
+{
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1445
+	int	i;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1446
+	scf_propvec_t
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1447
+		*bad_prop_vec = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1448
+	char	*fmri;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1449
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1450
+	if (atexit_set == 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1451
+		atexit(clear_prop_vec);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1452
+		bzero(prop_vec, sizeof (prop_vec));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1453
+		atexit_set = 1;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1454
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1455
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1456
+	if (cfg_to_prop_vec() != 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1457
+		fprintf(stderr, "Out of memory.\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1458
+		return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1459
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1460
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1461
+	(void) asprintf(&fmri, "%s:%s", BASE_FMRI, smf_instance);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1462
+	if (fmri == NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1463
+		fprintf(stderr, "Out of memory.\n");
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1464
+		return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1465
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1466
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1467
+	if (create) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1468
+		if (smf_create_ftp_instance(smf_instance) != 0) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1469
+			free(fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1470
+			return (-1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1471
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1472
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1473
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1474
+	if (create && (scf_write_propvec(fmri, "general", gen_prop_vec,
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1475
+	    &bad_prop_vec) != SCF_SUCCESS)) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1476
+		fprintf(stderr, "Can't update %s configuration:", fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1477
+		fprintf(stderr, "\t%s\n", scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1478
+		if (bad_prop_vec != NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1479
+			fprintf(stderr, "Could not set %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1480
+			    bad_prop_vec->pv_prop);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1481
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1482
+		free(fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1483
+		exit(1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1484
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1485
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1486
+	bad_prop_vec = NULL;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1487
+	if (scf_write_propvec(fmri, FTP_PROXY_PG, prop_vec, &bad_prop_vec)
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1488
+	    != SCF_SUCCESS) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1489
+		fprintf(stderr, "Can't update %s configuration:", fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1490
+		fprintf(stderr, "\t%s\n", scf_strerror(scf_error()));
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1491
+		if (bad_prop_vec != NULL) {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1492
+			fprintf(stderr, "Could not set %s\n",
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1493
+			    bad_prop_vec->pv_prop);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1494
+		}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1495
+		free(fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1496
+		exit(1);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1497
+	}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1498
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1499
+	free(fmri);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1500
+	return (0);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1501
+}
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1502
diff -Naur ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/smf-config.h ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/smf-config.h
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1503
--- ftp-proxy-OPENBSD_5_5-OPENBSD_5_5.pre-smf/smf-config.h	1969-12-31 16:00:00.000000000 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1504
+++ ftp-proxy-OPENBSD_5_5-OPENBSD_5_5/smf-config.h	2016-02-19 06:43:15.097134373 -0800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1505
@@ -0,0 +1,77 @@
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1506
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1507
+ * CDDL HEADER START
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1508
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1509
+ * The contents of this file are subject to the terms of the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1510
+ * Common Development and Distribution License (the "License").
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1511
+ * You may not use this file except in compliance with the License.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1512
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1513
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1514
+ * or http://www.opensolaris.org/os/licensing.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1515
+ * See the License for the specific language governing permissions
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1516
+ * and limitations under the License.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1517
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1518
+ * When distributing Covered Code, include this CDDL HEADER in each
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1519
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1520
+ * If applicable, add the following below this CDDL HEADER, with the
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1521
+ * fields enclosed by brackets "[]" replaced with your own identifying
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1522
+ * information: Portions Copyright [yyyy] [name of copyright owner]
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1523
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1524
+ * CDDL HEADER END
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1525
+ *
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1526
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1527
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1528
+/*
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1529
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1530
+ */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1531
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1532
+#ifndef	_SMF_CONFIG_H_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1533
+#define	_SMF_CONFIG_H_
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1534
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1535
+#include <string.h>
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1536
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1537
+#define	BASE_FMRI		"svc:/network/firewall/ftp-proxy"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1538
+#define	DEFAULT_INSTANCE	"default"
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1539
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1540
+#define	SMF_CFG_ANON_SET	0x00000001
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1541
+#define	SMF_CFG_FIXED_PROXY_SET	0x00000002
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1542
+#define	SMF_CFG_LISTEN_ADDR_SET	0x00000004
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1543
+#define	SMF_CFG_LISTEN_PORT_SET	0x00000008
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1544
+#define	SMF_CFG_DEBUG_LEVEL_SET	0x00000010
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1545
+#define	SMF_CFG_MAX_SESSION_SET	0x00000020
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1546
+#define	SMF_CFG_RFC_MODE_SET	0x00000040
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1547
+#define	SMF_CFG_FIXED_SERVER_PORT_SET	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1548
+				0x00000080
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1549
+#define	SMF_CFG_FIXED_SERVER_SET	\
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1550
+				0x00000100
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1551
+#define	SMF_CFG_TAG_SET		0x00000200
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1552
+#define	SMF_CFG_TIMEOUT_SET	0x00000400
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1553
+#define	SMF_CFG_LOG_SET		0x00000800
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1554
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1555
+#define	SMF_CFG_LOG_OFF	0
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1556
+#define	SMF_CFG_LOG_ON	1
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1557
+#define	SMF_CFG_LOG_ALL	2
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1558
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1559
+#define	SMF_COPY_STR(_x_)	(((_x_) == NULL) ? strdup("") : strdup((_x_)))
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1560
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1561
+typedef struct smf_ftppx_cfg {
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1562
+	unsigned int	cfg_set;	/* SMF_CFG_*_SET bit field */
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1563
+	int		cfg_anonymous_only;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1564
+	char 		*cfg_fixed_proxy;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1565
+	char 		*cfg_listen_addr;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1566
+	int64_t		cfg_listen_port;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1567
+	int64_t		cfg_debug_level;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1568
+	int64_t		cfg_max_sessions;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1569
+	char		*cfg_fixed_server;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1570
+	int64_t		cfg_fixed_server_port;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1571
+	int		cfg_rfc_mode;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1572
+	char		*cfg_tag;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1573
+	int64_t		cfg_timeout;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1574
+	int		cfg_log;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1575
+} smf_ftppx_cfg_t;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1576
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1577
+extern smf_ftppx_cfg_t	smf_ftp_cfg;
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1578
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1579
+extern int smf_print_ftpcfg(const char *);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1580
+extern int smf_write_ftpcfg(const char *, int);
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1581
+
a7df12d981ea PSARC/2014/291 PFLOGD: Packet Logging for PF
Petr Hoffmann <petr.hoffmann@oracle.com>
parents:
diff changeset
  1582
+#endif	/* !_SMF_CONFIG_H_ */