]> arthur.barton.de Git - netatalk.git/blobdiff - etc/afpd/volume.c
Extended Attributes Support on Solaris with ZFS
[netatalk.git] / etc / afpd / volume.c
index b84ac2a1fc12be3ed73bb3fedd8ff81e1f2771b1..c3c0c4eac60e8c717e586b1de444774ea3a572da 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: volume.c,v 1.79 2009-02-02 11:55:01 franklahm Exp $
+ * $Id: volume.c,v 1.80 2009-02-16 13:49:20 franklahm Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -174,6 +174,7 @@ static const _vol_opt_name vol_opt_names[] = {
     {AFPVOL_NODEV,      "NODEV"},       /* always use 0 for device number in cnid calls */
     {AFPVOL_EILSEQ,     "ILLEGALSEQ"},     /* encode illegal sequence */
     {AFPVOL_CACHE,      "CACHEID"},     /* Use adouble v2 CNID caching, default don't use it */
+    {AFPVOL_EXT_ATTRS,  "EXT_ATTRS"},   /* Vol supports Extened Attributes */
     {AFPVOL_ACLS,       "ACLS"},        /* Vol supports ACLs */
     {0, NULL}
 };
@@ -483,6 +484,8 @@ static void volset(struct vol_option *options, struct vol_option *save,
                options[VOLOPT_ROOTPREEXEC].i_value = 1;
             else if (strcasecmp(p, "upriv") == 0)
                 options[VOLOPT_FLAGS].i_value |= AFPVOL_UNIX_PRIV;
+            else if (strcasecmp(p, "extattrs") == 0)
+                options[VOLOPT_FLAGS].i_value |= AFPVOL_EXT_ATTRS;
             else if (strcasecmp(p, "acls") == 0)
                 options[VOLOPT_FLAGS].i_value |= AFPVOL_ACLS;
             else if (strcasecmp(p, "nodev") == 0)
@@ -1322,6 +1325,8 @@ int               *buflen;
                    ashort |= VOLPBIT_ATTR_UNIXPRIV;
             }
             if (afp_version >= 32) {
+               if (vol->v_flags & AFPVOL_EXT_ATTRS)
+                   ashort |= VOLPBIT_ATTR_EXT_ATTRS;
                if (vol->v_flags & AFPVOL_ACLS)
                    ashort |= VOLPBIT_ATTR_ACLS;
             }