#include <if/net_filter_defs.h>
#include <if/net_filter_rpcclient_defs.h>
-#include "include/net/net_filter.h"
+#include <net/net_filter.h>
#include "networking_internal.h"
#include "debug.h"
/** Open connection to management interface */
-static errval_t connect_to_net_filter(struct net_filter_state* st,
+static errval_t connect_to_net_filter(struct net_filter_state* st,
const char *dev_name)
{
errval_t r;
*
* @return SYS_ERR_OK on success, error on failure
*/
-errval_t net_filter_init(struct net_filter_state** st,
+errval_t net_filter_init(struct net_filter_state** st,
const char* cardname)
-{
+{
errval_t err;
struct net_filter_state* tmp = calloc(1, sizeof(struct net_filter_state));
tmp->filters_mac.start = NULL;
tmp->filters_mac.num_ele = 0;
- err = connect_to_net_filter(tmp, cardname);
+ // cardname are of the form name:vendor:device:bus:function ..
+ int end = 0;
+ for (; end < strlen(cardname); end++) {
+ if (cardname[end] == ':') {
+ break;
+ }
+ }
+
+ char name[64];
+ strncpy(name, cardname, end);
+ name[end] = '\0';
+
+ printf("cardname %s \n", name);
+ err = connect_to_net_filter(tmp, name);
*st = tmp;
return err;
}
/**
- * @brief Installs an L3/L4 filter in the hardware filter
+ * @brief Installs an L3/L4 filter in the hardware filter
* tables
*
* @param st net filter state
*
* @return SYS_ERR_OK on success, error on failure
*/
-errval_t net_filter_ip_install(struct net_filter_state* st,
+errval_t net_filter_ip_install(struct net_filter_state* st,
struct net_filter_ip* filt)
{
struct net_filter_ele* cur = st->filters_ip.start;
struct net_filter_ele* prev = NULL;
- /* go through linked list and find last element
+ /* go through linked list and find last element
(and check if filter is already installed) */
if (cur == NULL) {
st->filters_ip.start = malloc(sizeof(struct net_filter_ele));
cur->filter.ip.qid = filt->qid;
cur->filter.ip.type = filt->type;
cur->next = NULL;
- cur->prev = prev;
+ cur->prev = prev;
st->filters_ip.num_ele++;
/**
- * @brief Removes an L3/L4 filter in the hardware filter
+ * @brief Removes an L3/L4 filter in the hardware filter
* tables
*
* @param st net filter state
*
* @return SYS_ERR_OK on success, error on failure
*/
-errval_t net_filter_ip_remove(struct net_filter_state* st,
+errval_t net_filter_ip_remove(struct net_filter_state* st,
struct net_filter_ip* filt)
{
prev->next = cur->next;
if (cur->next != NULL) { // check if last
cur->next->prev = prev;
- }
+ }
} else {
st->filters_ip.start = cur->next;
}
{
USER_PANIC("NYI \n");
}
-