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