CC3220: Enterprise auth support

CL: wifi: CC3220: Enterprise auth support

PUBLISHED_FROM=ce445eb5b740073c9a3f9811f1acd404ce134f2e
This commit is contained in:
Deomid Ryabkov authored and Cesanta Bot committed 2018-12-18 18:19:21 +00:00
1 parent e2dfac946d
commit 455cec67a5
7 files changed
+152 -60

No files matched your search

+2 -2
View File
@@ -50,7 +50,7 @@
#define BM222_ADDR 0x18 #define BM222_ADDR 0x18
#define TMP006_ADDR 0x41 #define TMP006_ADDR 0x41
void fs_slfs_set_new_file_size(const char *name, size_t size); void fs_slfs_set_file_size(const char *name, size_t size);
static const char *upload_form = static const char *upload_form =
"\ "\
@@ -70,7 +70,7 @@ static struct mg_str upload_fname(struct mg_connection *nc,
if (nc->user_data != NULL) { if (nc->user_data != NULL) {
intptr_t cl = (intptr_t) nc->user_data; intptr_t cl = (intptr_t) nc->user_data;
if (cl >= 0) { if (cl >= 0) {
fs_slfs_set_new_file_size(fn + 3, cl); fs_slfs_set_file_size(fn + 3, cl);
} }
} }
lfn.len = fname.len + 4; lfn.len = fname.len + 4;
+74 -28
View File
@@ -13485,7 +13485,9 @@ off_t fs_slfs_lseek(int fd, off_t offset, int whence);
int fs_slfs_unlink(const char *filename); int fs_slfs_unlink(const char *filename);
int fs_slfs_rename(const char *from, const char *to); int fs_slfs_rename(const char *from, const char *to);
void fs_slfs_set_new_file_size(const char *name, size_t size); void fs_slfs_set_file_size(const char *name, size_t size);
void fs_slfs_set_file_flags(const char *name, uint32_t flags, uint32_t *token);
void fs_slfs_unset_file_flags(const char *name);
#endif /* defined(MG_FS_SLFS) */ #endif /* defined(MG_FS_SLFS) */
@@ -13526,14 +13528,14 @@ void fs_slfs_set_new_file_size(const char *name, size_t size);
/* Amalgamated: #include "common/mg_mem.h" */ /* Amalgamated: #include "common/mg_mem.h" */
#if SL_MAJOR_VERSION_NUM < 2 #if SL_MAJOR_VERSION_NUM < 2
int slfs_open(const unsigned char *fname, uint32_t flags) { int slfs_open(const unsigned char *fname, uint32_t flags, uint32_t *token) {
_i32 fh; _i32 fh;
_i32 r = sl_FsOpen(fname, flags, NULL /* token */, &fh); _i32 r = sl_FsOpen(fname, flags, (unsigned long *) token, &fh);
return (r < 0 ? r : fh); return (r < 0 ? r : fh);
} }
#else /* SL_MAJOR_VERSION_NUM >= 2 */ #else /* SL_MAJOR_VERSION_NUM >= 2 */
int slfs_open(const unsigned char *fname, uint32_t flags) { int slfs_open(const unsigned char *fname, uint32_t flags, uint32_t *token) {
return sl_FsOpen(fname, flags, NULL /* token */); return sl_FsOpen(fname, flags, (unsigned long *) token);
} }
#endif #endif
@@ -13549,9 +13551,11 @@ const char *drop_dir(const char *fname, bool *is_slfs);
#define FS_SLFS_MAX_FILE_SIZE (64 * 1024) #define FS_SLFS_MAX_FILE_SIZE (64 * 1024)
#endif #endif
struct sl_file_size_hint { struct sl_file_open_info {
char *name; char *name;
size_t size; size_t size;
uint32_t flags;
uint32_t *token;
}; };
struct sl_fd_info { struct sl_fd_info {
@@ -13561,7 +13565,10 @@ struct sl_fd_info {
}; };
static struct sl_fd_info s_sl_fds[MAX_OPEN_SLFS_FILES]; static struct sl_fd_info s_sl_fds[MAX_OPEN_SLFS_FILES];
static struct sl_file_size_hint s_sl_file_size_hints[MAX_OPEN_SLFS_FILES]; static struct sl_file_open_info s_sl_file_open_infos[MAX_OPEN_SLFS_FILES];
static struct sl_file_open_info *fs_slfs_find_foi(const char *name,
bool create);
static int sl_fs_to_errno(_i32 r) { static int sl_fs_to_errno(_i32 r) {
DBG(("SL error: %d", (int) r)); DBG(("SL error: %d", (int) r));
@@ -13602,7 +13609,13 @@ int fs_slfs_open(const char *pathname, int flags, mode_t mode) {
_u32 am = 0; _u32 am = 0;
fi->size = (size_t) -1; fi->size = (size_t) -1;
int rw = (flags & 3); int rw = (flags & 3);
size_t new_size = FS_SLFS_MAX_FILE_SIZE; size_t new_size = 0;
struct sl_file_open_info *foi =
fs_slfs_find_foi(pathname, false /* create */);
if (foi != NULL) {
LOG(LL_DEBUG, ("FOI for %s: %d 0x%x %p", pathname, (int) foi->size,
(unsigned int) foi->flags, foi->token));
}
if (rw == O_RDONLY) { if (rw == O_RDONLY) {
SlFsFileInfo_t sl_fi; SlFsFileInfo_t sl_fi;
_i32 r = sl_FsGetInfo((const _u8 *) pathname, 0, &sl_fi); _i32 r = sl_FsGetInfo((const _u8 *) pathname, 0, &sl_fi);
@@ -13617,24 +13630,27 @@ int fs_slfs_open(const char *pathname, int flags, mode_t mode) {
return set_errno(ENOTSUP); return set_errno(ENOTSUP);
} }
if (flags & O_CREAT) { if (flags & O_CREAT) {
size_t i; if (foi->size > 0) {
for (i = 0; i < MAX_OPEN_SLFS_FILES; i++) { new_size = foi->size;
if (s_sl_file_size_hints[i].name != NULL && } else {
strcmp(s_sl_file_size_hints[i].name, pathname) == 0) { new_size = FS_SLFS_MAX_FILE_SIZE;
new_size = s_sl_file_size_hints[i].size;
MG_FREE(s_sl_file_size_hints[i].name);
s_sl_file_size_hints[i].name = NULL;
break;
}
} }
am = FS_MODE_OPEN_CREATE(new_size, 0); am = FS_MODE_OPEN_CREATE(new_size, 0);
} else { } else {
am = SL_FS_WRITE; am = SL_FS_WRITE;
} }
#if SL_MAJOR_VERSION_NUM >= 2
am |= SL_FS_OVERWRITE;
#endif
} }
fi->fh = slfs_open((_u8 *) pathname, am); uint32_t *token = NULL;
LOG(LL_DEBUG, ("sl_FsOpen(%s, 0x%x) sz %u = %d", pathname, (int) am, if (foi != NULL) {
(unsigned int) new_size, (int) fi->fh)); am |= foi->flags;
token = foi->token;
}
fi->fh = slfs_open((_u8 *) pathname, am, token);
LOG(LL_DEBUG, ("sl_FsOpen(%s, 0x%x, %p) sz %u = %d", pathname, (int) am,
token, (unsigned int) new_size, (int) fi->fh));
int r; int r;
if (fi->fh >= 0) { if (fi->fh >= 0) {
fi->pos = 0; fi->pos = 0;
@@ -13738,16 +13754,46 @@ int fs_slfs_rename(const char *from, const char *to) {
return set_errno(ENOTSUP); return set_errno(ENOTSUP);
} }
void fs_slfs_set_new_file_size(const char *name, size_t size) { static struct sl_file_open_info *fs_slfs_find_foi(const char *name,
int i; bool create) {
int i = 0;
for (i = 0; i < MAX_OPEN_SLFS_FILES; i++) { for (i = 0; i < MAX_OPEN_SLFS_FILES; i++) {
if (s_sl_file_size_hints[i].name == NULL) { if (s_sl_file_open_infos[i].name != NULL &&
DBG(("File size hint: %s %d", name, (int) size)); strcmp(drop_dir(s_sl_file_open_infos[i].name, NULL), name) == 0) {
s_sl_file_size_hints[i].name = strdup(name);
s_sl_file_size_hints[i].size = size;
break; break;
} }
} }
if (i != MAX_OPEN_SLFS_FILES) return &s_sl_file_open_infos[i];
if (!create) return NULL;
for (i = 0; i < MAX_OPEN_SLFS_FILES; i++) {
if (s_sl_file_open_infos[i].name == NULL) break;
}
if (i == MAX_OPEN_SLFS_FILES) {
i = 0; /* Evict a random slot. */
}
if (s_sl_file_open_infos[i].name != NULL) {
free(s_sl_file_open_infos[i].name);
}
s_sl_file_open_infos[i].name = strdup(name);
return &s_sl_file_open_infos[i];
}
void fs_slfs_set_file_size(const char *name, size_t size) {
struct sl_file_open_info *foi = fs_slfs_find_foi(name, true /* create */);
foi->size = size;
}
void fs_slfs_set_file_flags(const char *name, uint32_t flags, uint32_t *token) {
struct sl_file_open_info *foi = fs_slfs_find_foi(name, true /* create */);
foi->flags = flags;
foi->token = token;
}
void fs_slfs_unset_file_flags(const char *name) {
struct sl_file_open_info *foi = fs_slfs_find_foi(name, false /* create */);
if (foi == NULL) return;
free(foi->name);
memset(foi, 0, sizeof(*foi));
} }
#endif /* defined(MG_FS_SLFS) || defined(CC3200_FS_SLFS) */ #endif /* defined(MG_FS_SLFS) || defined(CC3200_FS_SLFS) */
@@ -14890,9 +14936,9 @@ bool pem_to_der(const char *pem_file, const char *der_file) {
pf = fopen(pem_file, "r"); pf = fopen(pem_file, "r");
if (pf == NULL) goto clean; if (pf == NULL) goto clean;
remove(der_file); remove(der_file);
fs_slfs_set_new_file_size(der_file + MG_SSL_IF_SIMPLELINK_SLFS_PREFIX_LEN, fs_slfs_set_file_size(der_file + MG_SSL_IF_SIMPLELINK_SLFS_PREFIX_LEN, 2048);
2048);
df = fopen(der_file, "w"); df = fopen(der_file, "w");
fs_slfs_unset_file_flags(der_file + MG_SSL_IF_SIMPLELINK_SLFS_PREFIX_LEN);
if (df == NULL) goto clean; if (df == NULL) goto clean;
while (1) { while (1) {
char pem_buf[70]; char pem_buf[70];
+1 -1
View File
@@ -1531,7 +1531,7 @@ int sl_set_ssl_opts(int sock, struct mg_connection *nc);
#endif /* SL_MAJOR_VERSION_NUM < 2 */ #endif /* SL_MAJOR_VERSION_NUM < 2 */
int slfs_open(const unsigned char *fname, uint32_t flags); int slfs_open(const unsigned char *fname, uint32_t flags, uint32_t *token);
#endif /* MG_NET_IF == MG_NET_IF_SIMPLELINK */ #endif /* MG_NET_IF == MG_NET_IF_SIMPLELINK */
@@ -169,7 +169,7 @@ int sl_set_ssl_opts(int sock, struct mg_connection *nc);
#endif /* SL_MAJOR_VERSION_NUM < 2 */ #endif /* SL_MAJOR_VERSION_NUM < 2 */
int slfs_open(const unsigned char *fname, uint32_t flags); int slfs_open(const unsigned char *fname, uint32_t flags, uint32_t *token);
#endif /* MG_NET_IF == MG_NET_IF_SIMPLELINK */ #endif /* MG_NET_IF == MG_NET_IF_SIMPLELINK */
+69 -25
View File
@@ -31,14 +31,14 @@
#include "common/mg_mem.h" #include "common/mg_mem.h"
#if SL_MAJOR_VERSION_NUM < 2 #if SL_MAJOR_VERSION_NUM < 2
int slfs_open(const unsigned char *fname, uint32_t flags) { int slfs_open(const unsigned char *fname, uint32_t flags, uint32_t *token) {
_i32 fh; _i32 fh;
_i32 r = sl_FsOpen(fname, flags, NULL /* token */, &fh); _i32 r = sl_FsOpen(fname, flags, (unsigned long *) token, &fh);
return (r < 0 ? r : fh); return (r < 0 ? r : fh);
} }
#else /* SL_MAJOR_VERSION_NUM >= 2 */ #else /* SL_MAJOR_VERSION_NUM >= 2 */
int slfs_open(const unsigned char *fname, uint32_t flags) { int slfs_open(const unsigned char *fname, uint32_t flags, uint32_t *token) {
return sl_FsOpen(fname, flags, NULL /* token */); return sl_FsOpen(fname, flags, (unsigned long *) token);
} }
#endif #endif
@@ -54,9 +54,11 @@ const char *drop_dir(const char *fname, bool *is_slfs);
#define FS_SLFS_MAX_FILE_SIZE (64 * 1024) #define FS_SLFS_MAX_FILE_SIZE (64 * 1024)
#endif #endif
struct sl_file_size_hint { struct sl_file_open_info {
char *name; char *name;
size_t size; size_t size;
uint32_t flags;
uint32_t *token;
}; };
struct sl_fd_info { struct sl_fd_info {
@@ -66,7 +68,10 @@ struct sl_fd_info {
}; };
static struct sl_fd_info s_sl_fds[MAX_OPEN_SLFS_FILES]; static struct sl_fd_info s_sl_fds[MAX_OPEN_SLFS_FILES];
static struct sl_file_size_hint s_sl_file_size_hints[MAX_OPEN_SLFS_FILES]; static struct sl_file_open_info s_sl_file_open_infos[MAX_OPEN_SLFS_FILES];
static struct sl_file_open_info *fs_slfs_find_foi(const char *name,
bool create);
static int sl_fs_to_errno(_i32 r) { static int sl_fs_to_errno(_i32 r) {
DBG(("SL error: %d", (int) r)); DBG(("SL error: %d", (int) r));
@@ -107,7 +112,13 @@ int fs_slfs_open(const char *pathname, int flags, mode_t mode) {
_u32 am = 0; _u32 am = 0;
fi->size = (size_t) -1; fi->size = (size_t) -1;
int rw = (flags & 3); int rw = (flags & 3);
size_t new_size = FS_SLFS_MAX_FILE_SIZE; size_t new_size = 0;
struct sl_file_open_info *foi =
fs_slfs_find_foi(pathname, false /* create */);
if (foi != NULL) {
LOG(LL_DEBUG, ("FOI for %s: %d 0x%x %p", pathname, (int) foi->size,
(unsigned int) foi->flags, foi->token));
}
if (rw == O_RDONLY) { if (rw == O_RDONLY) {
SlFsFileInfo_t sl_fi; SlFsFileInfo_t sl_fi;
_i32 r = sl_FsGetInfo((const _u8 *) pathname, 0, &sl_fi); _i32 r = sl_FsGetInfo((const _u8 *) pathname, 0, &sl_fi);
@@ -122,24 +133,27 @@ int fs_slfs_open(const char *pathname, int flags, mode_t mode) {
return set_errno(ENOTSUP); return set_errno(ENOTSUP);
} }
if (flags & O_CREAT) { if (flags & O_CREAT) {
size_t i; if (foi->size > 0) {
for (i = 0; i < MAX_OPEN_SLFS_FILES; i++) { new_size = foi->size;
if (s_sl_file_size_hints[i].name != NULL && } else {
strcmp(s_sl_file_size_hints[i].name, pathname) == 0) { new_size = FS_SLFS_MAX_FILE_SIZE;
new_size = s_sl_file_size_hints[i].size;
MG_FREE(s_sl_file_size_hints[i].name);
s_sl_file_size_hints[i].name = NULL;
break;
}
} }
am = FS_MODE_OPEN_CREATE(new_size, 0); am = FS_MODE_OPEN_CREATE(new_size, 0);
} else { } else {
am = SL_FS_WRITE; am = SL_FS_WRITE;
} }
#if SL_MAJOR_VERSION_NUM >= 2
am |= SL_FS_OVERWRITE;
#endif
} }
fi->fh = slfs_open((_u8 *) pathname, am); uint32_t *token = NULL;
LOG(LL_DEBUG, ("sl_FsOpen(%s, 0x%x) sz %u = %d", pathname, (int) am, if (foi != NULL) {
(unsigned int) new_size, (int) fi->fh)); am |= foi->flags;
token = foi->token;
}
fi->fh = slfs_open((_u8 *) pathname, am, token);
LOG(LL_DEBUG, ("sl_FsOpen(%s, 0x%x, %p) sz %u = %d", pathname, (int) am,
token, (unsigned int) new_size, (int) fi->fh));
int r; int r;
if (fi->fh >= 0) { if (fi->fh >= 0) {
fi->pos = 0; fi->pos = 0;
@@ -243,16 +257,46 @@ int fs_slfs_rename(const char *from, const char *to) {
return set_errno(ENOTSUP); return set_errno(ENOTSUP);
} }
void fs_slfs_set_new_file_size(const char *name, size_t size) { static struct sl_file_open_info *fs_slfs_find_foi(const char *name,
int i; bool create) {
int i = 0;
for (i = 0; i < MAX_OPEN_SLFS_FILES; i++) { for (i = 0; i < MAX_OPEN_SLFS_FILES; i++) {
if (s_sl_file_size_hints[i].name == NULL) { if (s_sl_file_open_infos[i].name != NULL &&
DBG(("File size hint: %s %d", name, (int) size)); strcmp(drop_dir(s_sl_file_open_infos[i].name, NULL), name) == 0) {
s_sl_file_size_hints[i].name = strdup(name);
s_sl_file_size_hints[i].size = size;
break; break;
} }
} }
if (i != MAX_OPEN_SLFS_FILES) return &s_sl_file_open_infos[i];
if (!create) return NULL;
for (i = 0; i < MAX_OPEN_SLFS_FILES; i++) {
if (s_sl_file_open_infos[i].name == NULL) break;
}
if (i == MAX_OPEN_SLFS_FILES) {
i = 0; /* Evict a random slot. */
}
if (s_sl_file_open_infos[i].name != NULL) {
free(s_sl_file_open_infos[i].name);
}
s_sl_file_open_infos[i].name = strdup(name);
return &s_sl_file_open_infos[i];
}
void fs_slfs_set_file_size(const char *name, size_t size) {
struct sl_file_open_info *foi = fs_slfs_find_foi(name, true /* create */);
foi->size = size;
}
void fs_slfs_set_file_flags(const char *name, uint32_t flags, uint32_t *token) {
struct sl_file_open_info *foi = fs_slfs_find_foi(name, true /* create */);
foi->flags = flags;
foi->token = token;
}
void fs_slfs_unset_file_flags(const char *name) {
struct sl_file_open_info *foi = fs_slfs_find_foi(name, false /* create */);
if (foi == NULL) return;
free(foi->name);
memset(foi, 0, sizeof(*foi));
} }
#endif /* defined(MG_FS_SLFS) || defined(CC3200_FS_SLFS) */ #endif /* defined(MG_FS_SLFS) || defined(CC3200_FS_SLFS) */
+3 -1
View File
@@ -39,7 +39,9 @@ off_t fs_slfs_lseek(int fd, off_t offset, int whence);
int fs_slfs_unlink(const char *filename); int fs_slfs_unlink(const char *filename);
int fs_slfs_rename(const char *from, const char *to); int fs_slfs_rename(const char *from, const char *to);
void fs_slfs_set_new_file_size(const char *name, size_t size); void fs_slfs_set_file_size(const char *name, size_t size);
void fs_slfs_set_file_flags(const char *name, uint32_t flags, uint32_t *token);
void fs_slfs_unset_file_flags(const char *name);
#endif /* defined(MG_FS_SLFS) */ #endif /* defined(MG_FS_SLFS) */
+2 -2
View File
@@ -115,9 +115,9 @@ bool pem_to_der(const char *pem_file, const char *der_file) {
pf = fopen(pem_file, "r"); pf = fopen(pem_file, "r");
if (pf == NULL) goto clean; if (pf == NULL) goto clean;
remove(der_file); remove(der_file);
fs_slfs_set_new_file_size(der_file + MG_SSL_IF_SIMPLELINK_SLFS_PREFIX_LEN, fs_slfs_set_file_size(der_file + MG_SSL_IF_SIMPLELINK_SLFS_PREFIX_LEN, 2048);
2048);
df = fopen(der_file, "w"); df = fopen(der_file, "w");
fs_slfs_unset_file_flags(der_file + MG_SSL_IF_SIMPLELINK_SLFS_PREFIX_LEN);
if (df == NULL) goto clean; if (df == NULL) goto clean;
while (1) { while (1) {
char pem_buf[70]; char pem_buf[70];