Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d20acd09 authored by Jeff's avatar Jeff Committed by Steve French
Browse files

[CIFS] ipv6 support no longer experimental



Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 38c10a1d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -101,5 +101,5 @@ extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t);
extern ssize_t	cifs_listxattr(struct dentry *, char *, size_t);
extern int cifs_ioctl (struct inode *inode, struct file *filep,
		       unsigned int command, unsigned long arg);
#define CIFS_VERSION   "1.49"
#define CIFS_VERSION   "1.50"
#endif				/* _CIFSFS_H */
+0 −61
Original line number Diff line number Diff line
@@ -135,7 +135,6 @@ static const struct smb_to_posix_error mapping_table_ERRHRD[] = {
int
cifs_inet_pton(int address_family, char *cp,void *dst)
{
#ifdef CONFIG_CIFS_EXPERIMENTAL
	int ret = 0;

	/* calculate length by finding first slash or NULL */
@@ -152,66 +151,6 @@ cifs_inet_pton(int address_family, char *cp,void *dst)
	if (ret > 0)
		ret = 1;
	return ret;
#else
	int value;
	int digit;
	int i;
	char temp;
	char bytes[4];
	char *end = bytes;
	static const int addr_class_max[4] =
	    { 0xffffffff, 0xffffff, 0xffff, 0xff };

	if(address_family != AF_INET)
		return -EAFNOSUPPORT;

	for (i = 0; i < 4; i++) {
		bytes[i] = 0;
	}

	temp = *cp;

	while (TRUE) {
		if (!isdigit(temp))
			return 0;

		value = 0;
		digit = 0;
		for (;;) {
			if (isascii(temp) && isdigit(temp)) {
				value = (value * 10) + temp - '0';
				temp = *++cp;
				digit = 1;
			} else
				break;
		}

		if (temp == '.') {
			if ((end > bytes + 2) || (value > 255))
				return 0;
			*end++ = value;
			temp = *++cp;
		} else if (temp == ':') {
			cFYI(1,("IPv6 addresses not supported for CIFS mounts yet"));
			return -1;
		} else
			break;
	}

	/* check for last characters */
	if (temp != '\0' && (!isascii(temp) || !isspace(temp)))
		if (temp != '\\') {
			if (temp != '/')
				return 0;
			else
				(*cp = '\\');	/* switch the slash the expected way */
		}
	if (value > addr_class_max[end - bytes])
		return 0;

	*((__be32 *)dst) = *((__be32 *) bytes) | htonl(value);
	return 1; /* success */
#endif /* EXPERIMENTAL */	
}

/*****************************************************************************