Import luanet library
[project/luci.git] / libs / luanet / src / helper.c
1 /*
2  *  Licensed under the Apache License, Version 2.0 (the "License");
3  *  you may not use this file except in compliance with the License.
4  *  You may obtain a copy of the License at
5  *
6  *      http://www.apache.org/licenses/LICENSE-2.0
7  *
8  *  Unless required by applicable law or agreed to in writing, software
9  *  distributed under the License is distributed on an "AS IS" BASIS,
10  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11  *  See the License for the specific language governing permissions and
12  *  limitations under the License.
13  *
14  *   Copyright (C) 2008 John Crispin <blogic@openwrt.org> 
15  *   Copyright (C) 2008 Steven Barth <steven@midlink.org>
16  */
17
18 #include <stdlib.h>
19 #include <string.h>
20 #include <stdio.h>
21
22 #include <lua.h>
23 #include <lualib.h>
24 #include <lauxlib.h>
25
26 int char2ipv4(char *c, char *ip)
27 {
28         int i;
29         char *tmp = strdup(c);
30         char *t = tmp;
31         char *e = NULL;
32         int ret = -1;
33         for(i = 0; i < 4; i++)
34         {
35                 int j = strtol(t, &e, 10);
36                 if((j < 0) || (j > 255))
37                         goto error;
38                 if(i != 3)
39                         if(*e != '.')
40                                 goto error;
41                 *ip++ = j;
42                 t = e + 1;
43         }
44         ret = 0;
45 error:
46         free(tmp);
47         return ret;
48 }
49
50 void ipv42char(char *b, char *ip)
51 {
52         sprintf(ip, "%d.%d.%d.%d", b[0] & 0xff, b[1] & 0xff, b[2] & 0xff, b[3] & 0xff);
53 }
54
55 void mac2char(char *b, char *mac)
56 {
57         sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X",
58                 b[0] & 0xff, b[1] & 0xff, b[2] & 0xff, b[3] & 0xff, b[4] & 0xff, b[5] & 0xff);
59 }
60
61 void add_table_entry(lua_State *L, const char *k, const char *v)
62 {
63         lua_pushstring(L, k);
64         lua_pushstring(L, v);
65         lua_settable(L, -3);
66 }
67
68 void add_table_entry_int(lua_State *L, const char *k, int v)
69 {
70         lua_pushstring(L, k);
71         lua_pushinteger(L, v);
72         lua_settable(L, -3);
73 }