summaryrefslogtreecommitdiff
path: root/drivers/net/bih/voslist.h
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2017-08-30 08:25:59 +0000
committerYuval Adam <_@yuv.al>2017-08-30 08:25:59 +0000
commit8e4bff4cab0ddac6060645b0715210484d02ff40 (patch)
tree3a5c3024371a04692a3a6d9974d001cdff8ebf84 /drivers/net/bih/voslist.h
Initial file dump from open source releaseHEADmaster
Diffstat (limited to 'drivers/net/bih/voslist.h')
-rw-r--r--drivers/net/bih/voslist.h249
1 files changed, 249 insertions, 0 deletions
diff --git a/drivers/net/bih/voslist.h b/drivers/net/bih/voslist.h
new file mode 100644
index 00000000..45e5584d
--- /dev/null
+++ b/drivers/net/bih/voslist.h
@@ -0,0 +1,249 @@
+/*
+ * Bump in the Host (BIH)
+ * http://code.google.com/p/bump-in-the-host/source/
+ * ----------------------------------------------------------
+ *
+ * Copyrighted (C) 2010,2011 by the China Mobile Communications
+ * Corporation <bih.cmcc@gmail.com>;
+ * See the COPYRIGHT file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+#ifndef _VOSLIST_H
+#define _VOSLIST_H
+enum _listnode_status
+{
+ LISTNODE_STATUS_ENABLE,
+ LISTNODE_STATUS_DISABLE
+};
+
+struct listnode
+{
+ struct listnode *next;
+ struct listnode *prev;
+ unsigned int key;
+ char status;
+ void *data;
+ int datalen;
+ unsigned int datasp;
+};
+
+#define SHOW2BUF_DEF \
+ static char buff[1000],*p = NULL; \
+ int ret,len,size; \
+
+#define SHOW2BUF_INIT() \
+do \
+{ \
+ ret=0; \
+ if(p&&p!=buff) \
+ vfree(p); \
+ size=sizeof(buff)-1; \
+ len=0; \
+ buff[0]=0; \
+ p=buff; \
+} \
+while(0)
+
+#define SHOW2BUF_RET return(p)
+
+#define SHOW2BUF(format,...) \
+do \
+{ \
+ ret=snprintf(p+len,size-len,format,##__VA_ARGS__); \
+ if (ret < 0 || ret >= (size-len)) \
+ { \
+ while (1) \
+ { \
+ p=vrealloc(p,2*size+1,size,p!=buff); \
+ if(!p) \
+ { \
+ lprintf(0,"vrealloc error\n"); \
+ break; \
+ } \
+ size*=2; \
+ ret=snprintf(p+len,size-len,format,##__VA_ARGS__); \
+ if (ret > -1 && ret < (size-len)) \
+ break; \
+ } \
+ } \
+ len+=ret; \
+ if(p) \
+ *(p+len)=0; \
+} \
+while(0)
+
+#define lprintf(level,format,...) \
+do \
+{ \
+ if(level==0) \
+ printk("%s(%d)%s: "format,__FILE__,__LINE__,(char *)__FUNCTION__,##__VA_ARGS__ ); \
+ else \
+ printk((format),##__VA_ARGS__ ); \
+} \
+while(0)
+#define vmalloc(size) kmalloc((size),GFP_KERNEL)
+#define vfree kfree
+
+#define PKG_GET_STRING(val, cp) \
+do \
+{ \
+ while(*(cp)) \
+ *(val)++=*(cp)++; \
+ *(val)++=0; \
+} \
+while(0)
+
+#define PKG_GET_BYTE(val, cp) ((val) = *(cp)++)
+
+#define PKG_GET_SHORT(val, cp) \
+do \
+{ \
+ unsigned short Xv; \
+ Xv = (*(cp)++) << 8; \
+ Xv |= *(cp)++; \
+ (val) = Xv; \
+} \
+while(0)
+
+#define PKG_GET_NETSHORT(val, cp) \
+do \
+{ \
+ unsigned char *Xvp; \
+ unsigned short Xv; \
+ Xvp = (unsigned char *) &Xv; \
+ *Xvp++ = *(cp)++; \
+ *Xvp++ = *(cp)++; \
+ (val) = Xv; \
+} \
+while(0)
+
+#define PKG_GET_LONG(val, cp) \
+do \
+{ \
+ unsigned long Xv; \
+ Xv = (*(cp)++) << 24; \
+ Xv |= (*(cp)++) << 16; \
+ Xv |= (*(cp)++) << 8; \
+ Xv |= *(cp)++; \
+ (val) = Xv; \
+} \
+while(0)
+
+#define PKG_GET_NETLONG(val, cp) \
+do \
+{ \
+ unsigned char *Xvp; \
+ unsigned long Xv; \
+ Xvp = (unsigned char *) &Xv; \
+ *Xvp++ = *(cp)++; \
+ *Xvp++ = *(cp)++; \
+ *Xvp++ = *(cp)++; \
+ *Xvp++ = *(cp)++; \
+ (val) = Xv; \
+} \
+while(0)
+
+#define PKG_PUT_BUF(val, len, cp) \
+do \
+{ \
+ memcpy((cp),(val),(len)); \
+ (cp)+=(len); \
+} \
+while(0)
+
+#define PKG_PUT_STRING(val, cp) \
+do \
+{ \
+ while(*(val)) \
+ *(cp)++=*(val)++; \
+ *(cp)++=0; \
+} \
+while(0)
+
+#define PKG_PUT_BYTE(val, cp) (*(cp)++ = (unsigned char)(val))
+
+#define PKG_PUT_SHORT(val, cp) \
+do \
+{ \
+ unsigned short Xv; \
+ Xv = (unsigned short)(val); \
+ *(cp)++ = (unsigned char)(Xv >> 8); \
+ *(cp)++ = (unsigned char)Xv; \
+} \
+while(0)
+
+#define PKG_PUT_NETSHORT(val, cp) \
+do \
+{ \
+ unsigned char *Xvp; \
+ unsigned short Xv = (unsigned short)(val); \
+ Xvp = (unsigned char *)&Xv; \
+ *(cp)++ = *Xvp++; \
+ *(cp)++ = *Xvp++; \
+} \
+while(0)
+
+#define PKG_PUT_LONG(val, cp) \
+do \
+{ \
+ unsigned long Xv; \
+ Xv = (unsigned long)(val); \
+ *(cp)++ = (unsigned char)(Xv >> 24); \
+ *(cp)++ = (unsigned char)(Xv >> 16); \
+ *(cp)++ = (unsigned char)(Xv >> 8); \
+ *(cp)++ = (unsigned char)Xv; \
+} \
+while(0)
+
+#define PKG_PUT_NETLONG(val, cp) \
+do \
+{ \
+ unsigned char *Xvp; \
+ unsigned long Xv = (unsigned long)(val); \
+ Xvp = (unsigned char *)&Xv; \
+ *(cp)++ = *Xvp++; \
+ *(cp)++ = *Xvp++; \
+ *(cp)++ = *Xvp++; \
+ *(cp)++ = *Xvp++; \
+} \
+while(0)
+
+int inet_pton4(char *src,unsigned char *dst);
+int inet_pton6(char *src,unsigned char *dst);
+char *inet_ntop4(unsigned char *src, char *dst, size_t size);
+char *inet_ntop6(unsigned char *src, char *dst, size_t size);
+unsigned int sk_inet_addr(char* ip_str);
+char *buff2String(char *buff,int bufflen);
+int msg_field2(char *linebuf,int linelen,int num,char **field,int *flen,char gech);
+void *vrealloc(void *ptr,int newsize,int oldsize,char freeflag);
+int listnode_tj(struct listnode *head);
+void *listnode_pop(struct listnode **head);
+int listnode_free(struct listnode *node,void (*func)(void *));
+int listnode_clear(struct listnode **head,void (*func)(void *));
+void listnode_show(struct listnode *head);
+struct listnode *listnode_find(struct listnode *head,unsigned int key);
+struct listnode *listnode_search(struct listnode *head,void *data,int len,int (*func)(void *,void *,int));
+struct listnode *listnode_match(struct listnode *head,void *data,int len,int (*func)(void *,void *,int));
+int listnode_insert(struct listnode **head,struct listnode *node);
+struct listnode *listnode_uninsert(struct listnode **head,struct listnode *node);
+struct listnode *listnode_uninsert2(struct listnode **head,unsigned int key);
+struct listnode *listnode_add(struct listnode **head,unsigned int key,void *data,int datalen);
+int listnode_del(struct listnode **head,unsigned int key,void (*func)(void *));
+struct listnode *listnode_tail(struct listnode **head,void *data,int datalen);
+int listnode_join(struct listnode **head,struct listnode **list);
+
+#endif