diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-05-19 15:38:10 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-05-19 15:38:10 +0200 |
commit | ba4c666a9f50efeaabb546629de320bdeb134500 (patch) | |
tree | f2666c367b06e3fff573f35816ab98b33f08acce /openbsc | |
parent | ac914b87780f1d0090b1d49733b271bb4bd7ef06 (diff) |
[GPRS] NS: Make sure we allocate NS packet with headroom for FR/GRE
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/include/openbsc/gprs_ns.h | 6 | ||||
-rw-r--r-- | openbsc/src/gprs/gprs_ns.c | 12 |
2 files changed, 11 insertions, 7 deletions
diff --git a/openbsc/include/openbsc/gprs_ns.h b/openbsc/include/openbsc/gprs_ns.h index 1ec66316..03603bc8 100644 --- a/openbsc/include/openbsc/gprs_ns.h +++ b/openbsc/include/openbsc/gprs_ns.h @@ -223,6 +223,10 @@ int gprs_nsvc_reset(struct gprs_nsvc *nsvc, uint8_t cause); int gprs_ns_vty_init(struct gprs_ns_inst *nsi); #define NS_ALLOC_SIZE 1024 - +#define NS_ALLOC_HEADROOM 20 +static inline struct msgb *gprs_ns_msgb_alloc(void) +{ + return msgb_alloc_headroom(NS_ALLOC_SIZE, NS_ALLOC_HEADROOM, "GPRS/NS"); +} #endif diff --git a/openbsc/src/gprs/gprs_ns.c b/openbsc/src/gprs/gprs_ns.c index 8b226b89..9d0766c6 100644 --- a/openbsc/src/gprs/gprs_ns.c +++ b/openbsc/src/gprs/gprs_ns.c @@ -232,7 +232,7 @@ static int gprs_ns_tx(struct gprs_nsvc *nsvc, struct msgb *msg) static int gprs_ns_tx_simple(struct gprs_nsvc *nsvc, uint8_t pdu_type) { - struct msgb *msg = msgb_alloc(NS_ALLOC_SIZE, "GPRS/NS"); + struct msgb *msg = gprs_ns_msgb_alloc(); struct gprs_ns_hdr *nsh; log_set_context(BSC_CTX_NSVC, nsvc); @@ -250,7 +250,7 @@ static int gprs_ns_tx_simple(struct gprs_nsvc *nsvc, uint8_t pdu_type) int gprs_ns_tx_reset(struct gprs_nsvc *nsvc, uint8_t cause) { - struct msgb *msg = msgb_alloc(NS_ALLOC_SIZE, "GPRS/NS"); + struct msgb *msg = gprs_ns_msgb_alloc(); struct gprs_ns_hdr *nsh; uint16_t nsvci = htons(nsvc->nsvci); uint16_t nsei = htons(nsvc->nsei); @@ -278,7 +278,7 @@ int gprs_ns_tx_reset(struct gprs_nsvc *nsvc, uint8_t cause) int gprs_ns_tx_status(struct gprs_nsvc *nsvc, uint8_t cause, uint16_t bvci, struct msgb *orig_msg) { - struct msgb *msg = msgb_alloc(NS_ALLOC_SIZE, "GPRS/NS"); + struct msgb *msg = gprs_ns_msgb_alloc(); struct gprs_ns_hdr *nsh; uint16_t nsvci = htons(nsvc->nsvci); @@ -326,7 +326,7 @@ int gprs_ns_tx_status(struct gprs_nsvc *nsvc, uint8_t cause, int gprs_ns_tx_block(struct gprs_nsvc *nsvc, uint8_t cause) { - struct msgb *msg = msgb_alloc(NS_ALLOC_SIZE, "GPRS/NS"); + struct msgb *msg = gprs_ns_msgb_alloc(); struct gprs_ns_hdr *nsh; uint16_t nsvci = htons(nsvc->nsvci); @@ -465,7 +465,7 @@ static void gprs_ns_timer_cb(void *data) /* Section 9.2.6 */ static int gprs_ns_tx_reset_ack(struct gprs_nsvc *nsvc) { - struct msgb *msg = msgb_alloc(NS_ALLOC_SIZE, "GPRS/NS"); + struct msgb *msg = gprs_ns_msgb_alloc(); struct gprs_ns_hdr *nsh; uint16_t nsvci, nsei; @@ -823,7 +823,7 @@ void gprs_ns_destroy(struct gprs_ns_inst *nsi) static struct msgb *read_nsip_msg(struct bsc_fd *bfd, int *error, struct sockaddr_in *saddr) { - struct msgb *msg = msgb_alloc(NS_ALLOC_SIZE, "Abis/IP/GPRS-NS"); + struct msgb *msg = gprs_ns_msgb_alloc(); int ret = 0; socklen_t saddr_len = sizeof(*saddr); |