#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #include #include #include "const-c.inc" typedef struct tx80211 Net_Lorcon; MODULE = Net::Lorcon PACKAGE = Net::Lorcon INCLUDE: const-xs.inc MODULE = Net::Lorcon PACKAGE = Net::Lorcon PREFIX = tx80211_ void tx80211_getcardlist() INIT: int i; struct tx80211_cardlist *cardlist; PPCODE: cardlist = tx80211_getcardlist(); if (cardlist) { EXTEND(SP, cardlist->num_cards); for (i = 1; i < cardlist->num_cards; i++) { PUSHs(sv_2mortal(newSVpv(cardlist->cardnames[i], 0))); } tx80211_freecardlist(cardlist); } int tx80211_resolvecard(card) char *card Net_Lorcon* tx80211__new(in_ifname, in_injector) const char *in_ifname int in_injector INIT: Net_Lorcon *in_tx = malloc(sizeof *in_tx); memset(in_tx, '\0', sizeof *in_tx); CODE: if(tx80211_init(in_tx, in_ifname, in_injector) < 0) { free(in_tx); in_tx = NULL; } RETVAL = in_tx; OUTPUT: RETVAL void tx80211_DESTROY(in_tx) Net_Lorcon *in_tx CODE: tx80211_close(in_tx); free(in_tx); int tx80211_getcapabilities(in_tx) Net_Lorcon *in_tx int tx80211_open(in_tx) Net_Lorcon *in_tx int tx80211_close(in_tx) Net_Lorcon *in_tx int tx80211_setmode(in_tx, in_mode) Net_Lorcon *in_tx int in_mode int tx80211_getmode(in_tx) Net_Lorcon *in_tx int tx80211_setfunctionalmode(in_tx, in_fmode) Net_Lorcon *in_tx int in_fmode int tx80211_setchannel(in_tx, in_chan) Net_Lorcon *in_tx int in_chan int tx80211_getchannel(in_tx) Net_Lorcon *in_tx int tx80211_txpacket(in_tx, in_sv) Net_Lorcon *in_tx SV *in_sv INIT: STRLEN len; uint8_t *data = SvPV(in_sv, len); struct tx80211_packet packet = { .packet = data, .plen = len }; CODE: RETVAL = tx80211_txpacket(in_tx, &packet); OUTPUT: RETVAL