void __init ip_init(void) { add_decoder(NET_LAYER, LL_TYPE_IP, decode_ip); add_decoder(PROTO_LAYER, NL_TYPE_IPIP, decode_ip); add_decoder(NET_LAYER, LL_TYPE_PPP_IP, decode_ip); add_injector(CHAIN_LINKED, IP_MAGIC, inject_ip); add_injector(CHAIN_LINKED, STATELESS_IP_MAGIC, stateless_ip); }
void __init ip6_init(void) { add_decoder(NET_LAYER, LL_TYPE_IP6, decode_ip6); add_decoder(PROTO_LAYER, NL_TYPE_IP6, decode_ip6); add_decoder(NET6_LAYER, LO6_TYPE_HBH, decode_ip6_ext); add_decoder(NET6_LAYER, LO6_TYPE_RT, decode_ip6_ext); add_decoder(NET6_LAYER, LO6_TYPE_DST, decode_ip6_ext); add_injector(CHAIN_LINKED, IP6_MAGIC, inject_ip6); }
void __init cook_init(void) { add_decoder(LINK_LAYER, IL_TYPE_COOK, decode_cook); add_aligner(IL_TYPE_COOK, align_cook); }
void __init udp_init(void) { add_decoder(PROTO_LAYER, NL_TYPE_UDP, decode_udp); add_injector(CHAIN_ENTRY, NL_TYPE_UDP, inject_udp); }
void __init fddi_init(void) { add_decoder(LINK_LAYER, IL_TYPE_FDDI, decode_fddi); add_builder(IL_TYPE_FDDI, build_fddi); add_aligner(IL_TYPE_FDDI, align_fddi); }
void __init tcp_init(void) { add_decoder(PROTO_LAYER, NL_TYPE_TCP, decode_tcp); }
int options_create(context_t *ctx, int ncfg, srs_cfg_t *cfgs) { options_t *opts; srs_cfg_t *cfg; const char *key; const char *value; char *e; bool verbose; int i; int sts; size_t pfxlen; size_t ndec; options_decoder_t *decs; char buf[65536]; if (!ctx) { errno = EINVAL; return -1; } pfxlen = strlen(SPHINX_PREFIX); if (!(opts = mrp_allocz(sizeof(options_t))) || !(decs = mrp_allocz(sizeof(options_decoder_t)))) return -1; ndec = 1; decs->name = mrp_strdup("default"); decs->hmm = mrp_strdup(DEFAULT_HMM); decs->lm = mrp_strdup(DEFAULT_LM); decs->dict = mrp_strdup(DEFAULT_DICT); decs->fsg = NULL; opts->srcnam = NULL; opts->audio = NULL; opts->logfn = mrp_strdup("/dev/null"); opts->topn = 12; opts->rate = 16000; opts->silen = 1.0; verbose = false; sts = 0; for (i = 0; i < ncfg; i++) { cfg = cfgs + i; key = cfg->key + pfxlen; value = cfg->value; if (!strncmp(cfg->key, SPHINX_PREFIX, pfxlen)) { switch (key[0]) { case 'd': if (!strcmp(key, "dict")) { mrp_free((void *)decs->dict); decs->dict = mrp_strdup(value); } else if (!strncmp(key, "decoder", 7)) { add_decoder(ncfg, cfgs, value, &ndec, &decs); } break; case 'f': if (!strcmp(key, "fsg")) { mrp_free((void *)decs->fsg); decs->fsg = mrp_strdup(value); } break; case 'h': if (!strcmp(key, "hmm")) { mrp_free((void *)decs->hmm); decs->hmm = mrp_strdup(value); } break; case 'l': if (!strcmp(key, "lm")) { mrp_free((void *)decs->lm); decs->lm = mrp_strdup(value); } break; case 'p': if (!strcmp(key, "pulsesrc")) { mrp_free((void *)opts->srcnam); opts->srcnam = mrp_strdup(value); } break; case 'r': if (!strcmp(key, "record")) { mrp_free((void *)opts->audio); opts->audio = mrp_strdup(value); } break; case 's': if (!strcmp(key, "samplerate")) { opts->rate = strtoul(value, &e, 10); if (e[0] || e == value || opts->rate < 8000 || opts->rate > 4800) { mrp_log_error("invalid value %s for samplerate",value); sts = -1; } } break; case 't': if (!strcmp(key, "topn")) { opts->topn = strtoul(value, &e, 10); if (e[0] || e == value || opts->topn < 1 || opts->topn > 100) { mrp_log_error("invalid value %s for topn", value); sts = -1; } } break; default: // cfg->used = FALSE; break; } /* switch key */ } } /* for cfg */ opts->ndec = ndec; opts->decs = decs; if (sts == 0) { print_decoders(opts->ndec, opts->decs, sizeof(buf), buf); mrp_log_info("topn: %u\n" " pulseaudio source name: %s\n" " sample rate: %.1lf KHz\n" " audio recording file: %s\n" "%s", opts->topn, opts->srcnam ? opts->srcnam : "<default-source>", (double)opts->rate / 1000.0, opts->audio, buf); } ctx->opts = opts; ctx->verbose = verbose; return sts; }
/* register the data decoder */ void __init data_init(void) { add_decoder(APP_LAYER, PL_DEFAULT, decode_data); }
void __init mpls_init(void) { add_decoder(NET_LAYER, LL_TYPE_MPLS, decode_mpls); }
void __init wifi_init(void) { add_decoder(LINK_LAYER, IL_TYPE_WIFI, decode_wifi); add_aligner(IL_TYPE_WIFI, align_wifi); }
void __init eapol_init(void) { add_decoder(NET_LAYER, LL_TYPE_8021x, decode_eapol); }
void __init icmp6_init(void) { add_decoder(PROTO_LAYER, NL_TYPE_ICMP6, decode_icmp6); }
void __init gre_init(void) { add_decoder(PROTO_LAYER, NL_TYPE_GRE, decode_gre); }
void __init pppoe_init(void) { add_decoder(NET_LAYER, LL_TYPE_PPPOE, decode_pppoe); }
void __init udp_init(void) { add_decoder(PROTO_LAYER, NL_TYPE_UDP, decode_udp); }
void __init tr_init(void) { add_decoder(LINK_LAYER, IL_TYPE_TR, decode_tr); add_builder(IL_TYPE_TR, build_tr); add_aligner(IL_TYPE_TR, align_tr); }
void __init vlan_init(void) { add_decoder(NET_LAYER, LL_TYPE_VLAN, decode_vlan); }
void __init eth_init(void) { add_decoder(LINK_LAYER, IL_TYPE_ETH, decode_eth); add_builder(IL_TYPE_ETH, build_eth); add_aligner(IL_TYPE_ETH, align_eth); }
void __init radiotap_init(void) { add_decoder(LINK_LAYER, IL_TYPE_RADIOTAP, decode_radiotap); add_aligner(IL_TYPE_RADIOTAP, align_radiotap); }
void __init arp_init(void) { add_decoder(NET_LAYER, LL_TYPE_ARP, decode_arp); }
void __init eth_init(void) { add_decoder(LINK_LAYER, IL_TYPE_ETH, decode_eth); }
void __init tcp_init(void) { add_decoder(PROTO_LAYER, NL_TYPE_TCP, decode_tcp); add_injector(CHAIN_ENTRY, NL_TYPE_TCP, inject_tcp); }
void __init ip6_init(void) { add_decoder(NET_LAYER, LL_TYPE_IP6, decode_ip6); }