summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cleopatre/application/managerd/inc/vs_mme.h4
-rw-r--r--cleopatre/application/managerd/src/managerd.c3
-rw-r--r--cleopatre/application/managerd/src/vs_mme.c24
3 files changed, 31 insertions, 0 deletions
diff --git a/cleopatre/application/managerd/inc/vs_mme.h b/cleopatre/application/managerd/inc/vs_mme.h
index a81033a532..1f0170320f 100644
--- a/cleopatre/application/managerd/inc/vs_mme.h
+++ b/cleopatre/application/managerd/inc/vs_mme.h
@@ -61,6 +61,10 @@ typedef struct {
typedef struct {
uint8_t oui[3];
+} __attribute__ ((__packed__)) vs_reset_ind_t;
+
+typedef struct {
+ uint8_t oui[3];
uint8_t result;
uint32_t rx_bytes_low;
uint32_t rx_bytes_high;
diff --git a/cleopatre/application/managerd/src/managerd.c b/cleopatre/application/managerd/src/managerd.c
index 3086f1f722..2e79bb3f27 100644
--- a/cleopatre/application/managerd/src/managerd.c
+++ b/cleopatre/application/managerd/src/managerd.c
@@ -168,6 +168,9 @@ int main(int argc, char **argv)
return -1;
}
+ // send reset info (VS_MME_RESET.IND)
+ vs_mme_reset_ind (&ctx);
+
//Start manager daemon core
result = managerd_process(&ctx);
diff --git a/cleopatre/application/managerd/src/vs_mme.c b/cleopatre/application/managerd/src/vs_mme.c
index 344accdaf3..91baab946f 100644
--- a/cleopatre/application/managerd/src/vs_mme.c
+++ b/cleopatre/application/managerd/src/vs_mme.c
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <string.h>
#include <syslog.h>
+#include <stdlib.h>
#include "bridge.h"
#include "vs_mme.h"
@@ -248,3 +249,26 @@ enum bridge_status vs_mme_reset (struct managerd_ctx *ctx, MME_t *request, MME_t
return TO_DROP;
}
+
+void vs_mme_reset_ind (struct managerd_ctx *ctx)
+{
+ MME_t *mme;
+ vs_reset_ind_t *vs_reset;
+
+ assert (NULL != ctx);
+
+ if((mme = (MME_t *)malloc (sizeof(MME_t) + sizeof(vs_reset_ind_t))) == NULL)
+ return;
+ vs_reset = (vs_reset_ind_t *)(mme + 1);
+
+ memcpy (mme->mme_dest, BROADCAST_ADDR, ETH_ALEN);
+ memcpy (mme->mme_src, ctx->br_mac_addr, ETH_ALEN);
+ mme->mtype = htons (ETH_P_HPAV);
+ mme->mmv = MME_VERSION;
+ mme->mmtype = MME_TYPE_VS_RESET | MME_TYPE_IND;
+ mme->fmi = 0;
+ memcpy (vs_reset->oui, OUI_SPIDCOM, 3);
+
+ bridge_send_to_br(ctx, (uint8_t*) mme, sizeof(MME_t) + sizeof(vs_reset_ind_t));
+ return;
+}