asn1tostruct: Add memory free functions and use them in HNBAP
parent
b433b97474
commit
d10002cf8d
|
@ -333,7 +333,7 @@ for key in iesDefs:
|
|||
f.write(" ASN_STRUCT_FREE(asn_DEF_%s, %s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
|
||||
else:
|
||||
f.write(" memcpy(&%s->%s, %s_p, sizeof(%s_t));\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore, lowerFirstCamelWord(ietypesubst), ietypeunderscore))
|
||||
f.write(" ASN_STRUCT_FREE(asn_DEF_%s, %s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
|
||||
f.write(" FREEMEM(%s_p);\n" % (lowerFirstCamelWord(ietypesubst)))
|
||||
f.write(" } break;\n")
|
||||
f.write(" default:\n")
|
||||
f.write(" %s_DEBUG(\"Unknown protocol IE id (%%d) for message %s\\n\", (int)ie_p->id);\n" % (fileprefix.upper(), re.sub('-', '_', structName.lower())))
|
||||
|
@ -344,6 +344,35 @@ for key in iesDefs:
|
|||
f.write(" return decoded;\n")
|
||||
f.write("}\n\n")
|
||||
|
||||
for key in iesDefs:
|
||||
keyupperunderscore = re.sub('-', '_', key.upper())
|
||||
keylowerunderscore = re.sub('-', '_', key.lower())
|
||||
structName = re.sub('ies', '', key)
|
||||
|
||||
if len(iesDefs[key]["ies"]) == 0:
|
||||
continue
|
||||
|
||||
f.write("int %s_free_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
|
||||
if len(iesDefs[key]["ies"]) != 0:
|
||||
f.write(" %s_t *%s) {\n\n" % (prefix + re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||
|
||||
for ie in iesDefs[key]["ies"]:
|
||||
ietypeunderscore = prefix + re.sub('-', '_', ie[2])
|
||||
ieupperunderscore = prefix + re.sub('-', '_', ie[2]).upper()
|
||||
if ie[3] != "mandatory":
|
||||
if ie[3] == "optional":
|
||||
f.write(" /* Optional field */\n")
|
||||
elif ie[3] == "conditional":
|
||||
f.write(" /* Conditional field */\n")
|
||||
f.write(" if ((%s->presenceMask & %s_%s_PRESENT)\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), keyupperunderscore, ieupperunderscore))
|
||||
f.write(" == %s_%s_PRESENT) \n " % (keyupperunderscore, ieupperunderscore))
|
||||
|
||||
ieunderscore = prefix + re.sub('-', '_', ie[2])
|
||||
iename = re.sub('id-', '', ie[0])
|
||||
ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
|
||||
f.write(" ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_%s, &%s->%s);\n" % (ietypeunderscore, lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore))
|
||||
f.write("}\n\n")
|
||||
|
||||
for key in iesDefs:
|
||||
if key not in ieofielist.values():
|
||||
continue
|
||||
|
|
|
@ -126,6 +126,7 @@ static int hnbgw_rx_hnb_deregister(struct hnb_context *ctx, ANY_t *in)
|
|||
DEBUGP(DHNBAP, "HNB-DE-REGSITER cause=%ld\n",
|
||||
ies.cause);
|
||||
|
||||
hnbap_free_hnbde_registeries(&ies);
|
||||
hnb_context_release(ctx);
|
||||
|
||||
return 0;
|
||||
|
@ -153,7 +154,9 @@ static int hnbgw_rx_hnb_register_req(struct hnb_context *ctx, ANY_t *in)
|
|||
DEBUGP(DHNBAP, "HNB-REGISTER-REQ from %s\n", ctx->identity_info);
|
||||
|
||||
/* Send HNBRegisterAccept */
|
||||
return hnbgw_tx_hnb_register_acc(ctx);
|
||||
rc = hnbgw_tx_hnb_register_acc(ctx);
|
||||
hnbap_free_hnbregisterrequesties(&ies);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int hnbgw_rx_ue_register_req(struct hnb_context *ctx, ANY_t *in)
|
||||
|
@ -192,6 +195,7 @@ static int hnbgw_rx_ue_register_req(struct hnb_context *ctx, ANY_t *in)
|
|||
if (!ue)
|
||||
ue = ue_context_alloc(ctx, imsi);
|
||||
|
||||
hnbap_free_ueregisterrequesties(&ies);
|
||||
/* Send UERegisterAccept */
|
||||
return hnbgw_tx_ue_register_acc(ue);
|
||||
}
|
||||
|
@ -216,6 +220,7 @@ static int hnbgw_rx_ue_deregister(struct hnb_context *ctx, ANY_t *in)
|
|||
if (ue)
|
||||
ue_context_free(ue);
|
||||
|
||||
hnbap_free_uede_registeries(&ies);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -231,6 +236,7 @@ static int hnbgw_rx_err_ind(struct hnb_context *hnb, ANY_t *in)
|
|||
LOGP(DHNBAP, LOGL_NOTICE, "HNBAP ERROR.ind, cause: %s\n",
|
||||
hnbap_cause_str(&ies.cause));
|
||||
|
||||
hnbap_free_errorindicationies(&ies);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue