ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/marvell/webui/cgi/src/xml_ubus.h b/marvell/webui/cgi/src/xml_ubus.h
new file mode 100644
index 0000000..9d19f07
--- /dev/null
+++ b/marvell/webui/cgi/src/xml_ubus.h
@@ -0,0 +1,145 @@
+#ifndef __XML_UBUS_H_
+#define __XML_UBUS_H_
+#include <libubox/blobmsg.h>
+#include <libubox/blobmsg_json.h>
+#include <libubox/avl.h>
+#include <libubox/avl-cmp.h>
+#include <libubox/list.h>
+#include <libubox/uloop.h>
+#include <libubox/ustream.h>
+#include <libubox/blob.h>
+#include <libubox/utils.h>
+#include <libubox/usock.h>
+#include <libubus.h>
+
+#include <syslog.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <linux/limits.h>
+
+#include <poll.h>
+#include <mxml.h>
+#include <cgi.h>
+#include "blobmsg_xml.h"
+#include <include/log.h>
+#include <sys/prctl.h>
+
+#define XML_GET_BUF_SIZE 16*1024
+#define UBUS_DEFAULE_SID "00000000000000000000000000000000"
+#define ARG_METHOD "method"
+#define ARG_FILE "file"
+#define ARG_COMMAND "command"
+#define ARG_MODULE "module"
+#define ARG_ACTION "Action"
+#define ERROR_CAUSE_TAG "error_cause"
+#define RESPONSE_TAG "response"
+#define OTA_UNIX_PATH "/tmp/ota.unix"
+#define CONFIG_FILE_NAME "pxa1826_cfg.tar.gz"
+
+#define LOGCAT
+#ifdef LOGCAT
+#define CGI_LOGI(format, args...) RDPRINTF(format, ##args)
+#define CGI_LOGD(format, args...) RDBGMSG(format, ##args)
+#define CGI_LOGE(format, args...) RERRMSG(format, ##args)
+#else
+#define CGI_LOGI(format, args..
+#endif
+
+#ifndef UNUSEDPARAM
+#define UNUSEDPARAM(param) (void)param;
+#endif
+
+enum {
+ RPC_METHOD,
+ RPC_SESSIONID,
+ RPC_OBJPATH,
+ PRC_OBJMETHOD,
+ RPC_MAX,
+};
+
+enum {
+ SES_ACCESS,
+ __SES_MAX,
+};
+
+typedef enum _error_cause_format {
+ ERR_NUMBER,
+ ERR_STRING,
+} e_error_cause_format;
+
+typedef enum _error_cause {
+ NO_ERR,
+ ERR_CGI_FORMAT,
+ ERR_PARAM_INVALID,
+ ERR_SERVICE_NOT_FOUND,
+ ERR_METHOD_NOT_SUPPORT,
+ ERR_SESSION_INVALID,
+ ERR_CGI_FILE,
+ _ERR_MAX,
+} e_error_cause;
+
+struct rpc_data {
+ char *sid;
+ char *ubus_method;
+ char *object_path;
+ char *object_method;
+ struct blob_attr *data;
+ struct blob_attr *params;
+};
+
+const char *error_cause_msg[] = {
+ "OK",
+ "inner cgi error, wrong post XML",
+ "invalid param",
+ "not found the object path",
+ "list method not support",
+ "session invalid",
+ "inner cgi error, open file failed",
+};
+
+typedef enum _e_upload_status{
+ UPLOAD_OK,
+ ERR_UPLOAD_FAILED,
+} e_upload_status;
+
+struct upload_ctx {
+ unsigned int id;
+ char f_name[32];
+ int n_file_total;
+ int n_file_segmnet;
+ int n_send;
+ int fd;
+ e_upload_status upload_status;
+};
+
+typedef int (*upload_fw_init_cb_t) (struct upload_ctx *, int, int);
+typedef int (*upload_fw_write_cb_t) (struct upload_ctx *, char *, int);
+typedef int (*upload_fw_done_cb_t) (struct upload_ctx *);
+typedef int (*download_init_cb_t) ();
+typedef int (*download_response_cb_t) ();
+typedef int (*upload_response_cb_t) (struct upload_ctx *);
+
+struct upload_forward_ops {
+ upload_fw_init_cb_t upload_fw_init_cb;
+ upload_fw_write_cb_t upload_fw_write_cb;
+ upload_fw_done_cb_t upload_fw_done_cb;
+ upload_response_cb_t upload_response_cb;
+};
+
+struct download_ops {
+ download_init_cb_t download_init_cb;
+ download_response_cb_t download_response_cb;
+};
+
+struct mime_vec {
+ char *str;
+ int len;
+};
+
+#endif