One Level Up
Top Level
runtime/lib_net.c - ktap
Global variables defined
Functions defined
Source code
- #include <net/inet_sock.h>
- #include "../include/ktap_types.h"
- #include "ktap.h"
- #include "kp_obj.h"
- #include "kp_str.h"
- #include "kp_vm.h"
- static int kplib_net_ip_sock_saddr(ktap_state_t *ks)
- {
- struct inet_sock *isk;
- int family;
- TODO
- isk = (struct inet_sock *)kp_arg_checknumber(ks, 1);
- family = isk->sk.__sk_common.skc_family;
- if (family == AF_INET) {
- set_number(ks->top, isk->inet_rcv_saddr);
- } else {
- kp_error(ks, "ip_sock_saddr only support ipv4 now\n");
- set_nil(ks->top);
- }
- incr_top(ks);
- return 1;
- }
- static int kplib_net_ip_sock_daddr(ktap_state_t *ks)
- {
- struct inet_sock *isk;
- int family;
- TODO
- isk = (struct inet_sock *)kp_arg_checknumber(ks, 1);
- family = isk->sk.__sk_common.skc_family;
- if (family == AF_INET) {
- set_number(ks->top, isk->inet_daddr);
- } else {
- kp_error(ks, "ip_sock_daddr only support ipv4 now\n");
- set_nil(ks->top);
- }
- incr_top(ks);
- return 1;
- }
- static int kplib_net_format_ip_addr(ktap_state_t *ks)
- {
- __be32 ip = (__be32)kp_arg_checknumber(ks, 1);
- ktap_str_t *ts;
- char ipstr[32];
- snprintf(ipstr, 32, "%pI4", &ip);
- ts = kp_str_newz(ks, ipstr);
- if (ts) {
- set_string(ks->top, kp_str_newz(ks, ipstr));
- incr_top(ks);
- return 1;
- } else
- return -1;
- }
- static const ktap_libfunc_t net_lib_funcs[] = {
- {"ip_sock_saddr", kplib_net_ip_sock_saddr},
- {"ip_sock_daddr", kplib_net_ip_sock_daddr},
- {"format_ip_addr", kplib_net_format_ip_addr},
- {NULL}
- };
- int kp_lib_init_net(ktap_state_t *ks)
- {
- return kp_vm_register_lib(ks, "net", net_lib_funcs);
- }
One Level Up
Top Level