Skip to content

Commit

Permalink
libshare/smb: cleanup
Browse files Browse the repository at this point in the history
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes openzfs#13165
  • Loading branch information
nabijaczleweli authored and andrewc12 committed Sep 23, 2022
1 parent 2dc1bd8 commit 01fd1f9
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 56 deletions.
17 changes: 3 additions & 14 deletions lib/libshare/os/freebsd/smb.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,9 @@
* Copyright (c) 2020 by Delphix. All rights reserved.
*/

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <libzfs.h>
#include <libshare.h>
#include "libshare_impl.h"
#include "smb.h"

static sa_fstype_t *smb_fstype;

Expand All @@ -47,7 +36,7 @@ static int
smb_enable_share(sa_share_impl_t impl_share)
{
(void) impl_share;
fprintf(stderr, "No SMB support in FreeBSD yet.\n");
fputs("No SMB support in FreeBSD yet.\n", stderr);
return (SA_NOT_SUPPORTED);
}
/*
Expand All @@ -57,7 +46,7 @@ static int
smb_disable_share(sa_share_impl_t impl_share)
{
(void) impl_share;
fprintf(stderr, "No SMB support in FreeBSD yet.\n");
fputs("No SMB support in FreeBSD yet.\n", stderr);
return (SA_NOT_SUPPORTED);
}

Expand All @@ -68,7 +57,7 @@ static int
smb_validate_shareopts(const char *shareopts)
{
(void) shareopts;
fprintf(stderr, "No SMB support in FreeBSD yet.\n");
fputs("No SMB support in FreeBSD yet.\n", stderr);
return (SA_NOT_SUPPORTED);
}

Expand Down
4 changes: 2 additions & 2 deletions lib/libshare/os/linux/nfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -496,8 +496,8 @@ static int
nfs_commit_shares(void)
{
char *argv[] = {
"/usr/sbin/exportfs",
"-ra",
(char *)"/usr/sbin/exportfs",
(char *)"-ra",
NULL
};

Expand Down
67 changes: 29 additions & 38 deletions lib/libshare/os/linux/smb.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ static boolean_t smb_available(void);

static sa_fstype_t *smb_fstype;

smb_share_t *smb_shares;
static smb_share_t *smb_shares;
static int smb_disable_share(sa_share_impl_t impl_share);
static boolean_t smb_is_share_active(sa_share_impl_t impl_share);

Expand Down Expand Up @@ -218,46 +218,39 @@ smb_retrieve_shares(void)
static int
smb_enable_share_one(const char *sharename, const char *sharepath)
{
char *argv[10], *pos;
char name[SMB_NAME_MAX], comment[SMB_COMMENT_MAX];
int rc;

/* Support ZFS share name regexp '[[:alnum:]_-.: ]' */
strlcpy(name, sharename, sizeof (name));
name [sizeof (name)-1] = '\0';

pos = name;
while (*pos != '\0') {
switch (*pos) {
for (char *itr = name; *itr != '\0'; ++itr)
switch (*itr) {
case '/':
case '-':
case ':':
case ' ':
*pos = '_';
*itr = '_';
}

++pos;
}

/*
* CMD: net -S NET_CMD_ARG_HOST usershare add Test1 /share/Test1 \
* "Comment" "Everyone:F"
*/
snprintf(comment, sizeof (comment), "Comment: %s", sharepath);

argv[0] = NET_CMD_PATH;
argv[1] = (char *)"-S";
argv[2] = NET_CMD_ARG_HOST;
argv[3] = (char *)"usershare";
argv[4] = (char *)"add";
argv[5] = (char *)name;
argv[6] = (char *)sharepath;
argv[7] = (char *)comment;
argv[8] = (char *)"Everyone:F";
argv[9] = NULL;

rc = libzfs_run_process(argv[0], argv, 0);
if (rc < 0)
char *argv[] = {
(char *)NET_CMD_PATH,
(char *)"-S",
(char *)NET_CMD_ARG_HOST,
(char *)"usershare",
(char *)"add",
name,
(char *)sharepath,
comment,
(char *)"Everyone:F",
NULL,
};

if (libzfs_run_process(argv[0], argv, 0) < 0)
return (SA_SYSTEM_ERR);

/* Reload the share file */
Expand Down Expand Up @@ -298,20 +291,18 @@ smb_enable_share(sa_share_impl_t impl_share)
static int
smb_disable_share_one(const char *sharename)
{
int rc;
char *argv[7];

/* CMD: net -S NET_CMD_ARG_HOST usershare delete Test1 */
argv[0] = NET_CMD_PATH;
argv[1] = (char *)"-S";
argv[2] = NET_CMD_ARG_HOST;
argv[3] = (char *)"usershare";
argv[4] = (char *)"delete";
argv[5] = (char *)sharename;
argv[6] = NULL;

rc = libzfs_run_process(argv[0], argv, 0);
if (rc < 0)
char *argv[] = {
(char *)NET_CMD_PATH,
(char *)"-S",
(char *)NET_CMD_ARG_HOST,
(char *)"usershare",
(char *)"delete",
(char *)sharename,
NULL,
};

if (libzfs_run_process(argv[0], argv, 0) < 0)
return (SA_SYSTEM_ERR);
else
return (SA_OK);
Expand Down
2 changes: 0 additions & 2 deletions lib/libshare/smb.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,4 @@ typedef struct smb_share_s {
struct smb_share_s *next;
} smb_share_t;

extern smb_share_t *smb_shares;

void libshare_smb_init(void);
2 changes: 2 additions & 0 deletions lib/libspl/include/libshare.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
#ifndef _LIBSPL_LIBSHARE_H
#define _LIBSPL_LIBSHARE_H extern __attribute__((visibility("default")))

#include <sys/types.h>

/* API Initialization */
#define SA_INIT_SHARE_API 0x0001 /* init share specific interface */
#define SA_INIT_CONTROL_API 0x0002 /* init control specific interface */
Expand Down

0 comments on commit 01fd1f9

Please sign in to comment.