diff options
| author | whitespace / reindent <invalid@invalid.invalid> | 2017-08-09 11:49:42 +0200 |
|---|---|---|
| committer | whitespace / reindent <invalid@invalid.invalid> | 2017-08-09 12:03:17 +0200 |
| commit | ac4d0be5874fafd14212d6007fff7495edc9b152 (patch) | |
| tree | 5e2f0d3189de928c849f9983406389ade3b098cb /ospfd/ospf_api.c | |
| parent | 76a86854181c27819e5cf71b12ae1fa5ccd9e02a (diff) | |
*: reindentreindent-3.0-after
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'ospfd/ospf_api.c')
| -rw-r--r-- | ospfd/ospf_api.c | 848 |
1 files changed, 426 insertions, 422 deletions
diff --git a/ospfd/ospf_api.c b/ospfd/ospf_api.c index 9f90f671ce..f8c8a2ee8c 100644 --- a/ospfd/ospf_api.c +++ b/ospfd/ospf_api.c @@ -3,7 +3,7 @@ * Copyright (C) 2001, 2002 Ralph Keller * * This file is part of GNU Zebra. - * + * * GNU Zebra is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2, or (at your @@ -35,7 +35,7 @@ #include "log.h" #include "thread.h" #include "hash.h" -#include "sockunion.h" /* for inet_aton() */ +#include "sockunion.h" /* for inet_aton() */ #include "buffer.h" #include "network.h" @@ -59,31 +59,28 @@ /* For debugging only, will be removed */ -void -api_opaque_lsa_print (struct lsa_header *data) +void api_opaque_lsa_print(struct lsa_header *data) { - struct opaque_lsa - { - struct lsa_header header; - u_char mydata[]; - }; + struct opaque_lsa { + struct lsa_header header; + u_char mydata[]; + }; - struct opaque_lsa *olsa; - int opaquelen; - int i; + struct opaque_lsa *olsa; + int opaquelen; + int i; - ospf_lsa_header_dump (data); + ospf_lsa_header_dump(data); - olsa = (struct opaque_lsa *) data; + olsa = (struct opaque_lsa *)data; - opaquelen = ntohs (data->length) - OSPF_LSA_HEADER_SIZE; - zlog_debug ("apiserver_lsa_print: opaquelen=%d\n", opaquelen); + opaquelen = ntohs(data->length) - OSPF_LSA_HEADER_SIZE; + zlog_debug("apiserver_lsa_print: opaquelen=%d\n", opaquelen); - for (i = 0; i < opaquelen; i++) - { - zlog_debug ("0x%x ", olsa->mydata[i]); - } - zlog_debug ("\n"); + for (i = 0; i < opaquelen; i++) { + zlog_debug("0x%x ", olsa->mydata[i]); + } + zlog_debug("\n"); } /* ----------------------------------------------------------- @@ -91,172 +88,212 @@ api_opaque_lsa_print (struct lsa_header *data) * ----------------------------------------------------------- */ -struct msg * -msg_new (u_char msgtype, void *msgbody, u_int32_t seqnum, u_int16_t msglen) +struct msg *msg_new(u_char msgtype, void *msgbody, u_int32_t seqnum, + u_int16_t msglen) { - struct msg *new; + struct msg *new; - new = XCALLOC (MTYPE_OSPF_API_MSG, sizeof (struct msg)); + new = XCALLOC(MTYPE_OSPF_API_MSG, sizeof(struct msg)); - new->hdr.version = OSPF_API_VERSION; - new->hdr.msgtype = msgtype; - new->hdr.msglen = htons (msglen); - new->hdr.msgseq = htonl (seqnum); + new->hdr.version = OSPF_API_VERSION; + new->hdr.msgtype = msgtype; + new->hdr.msglen = htons(msglen); + new->hdr.msgseq = htonl(seqnum); - new->s = stream_new (msglen); - assert (new->s); - stream_put (new->s, msgbody, msglen); + new->s = stream_new(msglen); + assert(new->s); + stream_put(new->s, msgbody, msglen); - return new; + return new; } /* Duplicate a message by copying content. */ -struct msg * -msg_dup (struct msg *msg) +struct msg *msg_dup(struct msg *msg) { - struct msg *new; + struct msg *new; - assert (msg); + assert(msg); - new = msg_new (msg->hdr.msgtype, STREAM_DATA (msg->s), - ntohl (msg->hdr.msgseq), ntohs (msg->hdr.msglen)); - return new; + new = msg_new(msg->hdr.msgtype, STREAM_DATA(msg->s), + ntohl(msg->hdr.msgseq), ntohs(msg->hdr.msglen)); + return new; } /* XXX only for testing, will be removed */ struct nametab { - int value; - const char *name; + int value; + const char *name; }; -const char * -ospf_api_typename (int msgtype) +const char *ospf_api_typename(int msgtype) { - struct nametab NameTab[] = { - { MSG_REGISTER_OPAQUETYPE, "Register opaque-type", }, - { MSG_UNREGISTER_OPAQUETYPE, "Unregister opaque-type", }, - { MSG_REGISTER_EVENT, "Register event", }, - { MSG_SYNC_LSDB, "Sync LSDB", }, - { MSG_ORIGINATE_REQUEST, "Originate request", }, - { MSG_DELETE_REQUEST, "Delete request", }, - { MSG_REPLY, "Reply", }, - { MSG_READY_NOTIFY, "Ready notify", }, - { MSG_LSA_UPDATE_NOTIFY, "LSA update notify", }, - { MSG_LSA_DELETE_NOTIFY, "LSA delete notify", }, - { MSG_NEW_IF, "New interface", }, - { MSG_DEL_IF, "Del interface", }, - { MSG_ISM_CHANGE, "ISM change", }, - { MSG_NSM_CHANGE, "NSM change", }, - }; - - int i, n = array_size(NameTab); - const char *name = NULL; - - for (i = 0; i < n; i++) - { - if (NameTab[i].value == msgtype) - { - name = NameTab[i].name; - break; - } - } - - return name ? name : "?"; + struct nametab NameTab[] = { + { + MSG_REGISTER_OPAQUETYPE, "Register opaque-type", + }, + { + MSG_UNREGISTER_OPAQUETYPE, "Unregister opaque-type", + }, + { + MSG_REGISTER_EVENT, "Register event", + }, + { + MSG_SYNC_LSDB, "Sync LSDB", + }, + { + MSG_ORIGINATE_REQUEST, "Originate request", + }, + { + MSG_DELETE_REQUEST, "Delete request", + }, + { + MSG_REPLY, "Reply", + }, + { + MSG_READY_NOTIFY, "Ready notify", + }, + { + MSG_LSA_UPDATE_NOTIFY, "LSA update notify", + }, + { + MSG_LSA_DELETE_NOTIFY, "LSA delete notify", + }, + { + MSG_NEW_IF, "New interface", + }, + { + MSG_DEL_IF, "Del interface", + }, + { + MSG_ISM_CHANGE, "ISM change", + }, + { + MSG_NSM_CHANGE, "NSM change", + }, + }; + + int i, n = array_size(NameTab); + const char *name = NULL; + + for (i = 0; i < n; i++) { + if (NameTab[i].value == msgtype) { + name = NameTab[i].name; + break; + } + } + + return name ? name : "?"; } -const char * -ospf_api_errname (int errcode) +const char *ospf_api_errname(int errcode) { - struct nametab NameTab[] = { - { OSPF_API_OK, "OK", }, - { OSPF_API_NOSUCHINTERFACE, "No such interface", }, - { OSPF_API_NOSUCHAREA, "No such area", }, - { OSPF_API_NOSUCHLSA, "No such LSA", }, - { OSPF_API_ILLEGALLSATYPE, "Illegal LSA type", }, - { OSPF_API_OPAQUETYPEINUSE, "Opaque type in use", }, - { OSPF_API_OPAQUETYPENOTREGISTERED, "Opaque type not registered", }, - { OSPF_API_NOTREADY, "Not ready", }, - { OSPF_API_NOMEMORY, "No memory", }, - { OSPF_API_ERROR, "Other error", }, - { OSPF_API_UNDEF, "Undefined", }, - }; - - int i, n = array_size(NameTab); - const char *name = NULL; - - for (i = 0; i < n; i++) - { - if (NameTab[i].value == errcode) - { - name = NameTab[i].name; - break; - } - } - - return name ? name : "?"; + struct nametab NameTab[] = { + { + OSPF_API_OK, "OK", + }, + { + OSPF_API_NOSUCHINTERFACE, "No such interface", + }, + { + OSPF_API_NOSUCHAREA, "No such area", + }, + { + OSPF_API_NOSUCHLSA, "No such LSA", + }, + { + OSPF_API_ILLEGALLSATYPE, "Illegal LSA type", + }, + { + OSPF_API_OPAQUETYPEINUSE, "Opaque type in use", + }, + { + OSPF_API_OPAQUETYPENOTREGISTERED, + "Opaque type not registered", + }, + { + OSPF_API_NOTREADY, "Not ready", + }, + { + OSPF_API_NOMEMORY, "No memory", + }, + { + OSPF_API_ERROR, "Other error", + }, + { + OSPF_API_UNDEF, "Undefined", + }, + }; + + int i, n = array_size(NameTab); + const char *name = NULL; + + for (i = 0; i < n; i++) { + if (NameTab[i].value == errcode) { + name = NameTab[i].name; + break; + } + } + + return name ? name : "?"; } -void -msg_print (struct msg *msg) +void msg_print(struct msg *msg) { - if (!msg) - { - zlog_debug ("msg_print msg=NULL!\n"); - return; - } + if (!msg) { + zlog_debug("msg_print msg=NULL!\n"); + return; + } #ifdef ORIGINAL_CODING - zlog_debug - ("msg=%p msgtype=%d msglen=%d msgseq=%d streamdata=%p streamsize=%lu\n", - msg, msg->hdr.msgtype, ntohs (msg->hdr.msglen), ntohl (msg->hdr.msgseq), - STREAM_DATA (msg->s), STREAM_SIZE (msg->s)); + zlog_debug( + "msg=%p msgtype=%d msglen=%d msgseq=%d streamdata=%p streamsize=%lu\n", + msg, msg->hdr.msgtype, ntohs(msg->hdr.msglen), + ntohl(msg->hdr.msgseq), STREAM_DATA(msg->s), + STREAM_SIZE(msg->s)); #else /* ORIGINAL_CODING */ - /* API message common header part. */ - zlog_debug - ("API-msg [%s]: type(%d),len(%d),seq(%lu),data(%p),size(%zd)", - ospf_api_typename (msg->hdr.msgtype), msg->hdr.msgtype, - ntohs (msg->hdr.msglen), (unsigned long) ntohl (msg->hdr.msgseq), - STREAM_DATA (msg->s), STREAM_SIZE (msg->s)); - - /* API message body part. */ + /* API message common header part. */ + zlog_debug("API-msg [%s]: type(%d),len(%d),seq(%lu),data(%p),size(%zd)", + ospf_api_typename(msg->hdr.msgtype), msg->hdr.msgtype, + ntohs(msg->hdr.msglen), + (unsigned long)ntohl(msg->hdr.msgseq), STREAM_DATA(msg->s), + STREAM_SIZE(msg->s)); + +/* API message body part. */ #ifdef ndef - /* Generic Hex/Ascii dump */ - DumpBuf (STREAM_DATA (msg->s), STREAM_SIZE (msg->s)); /* Sorry, deleted! */ -#else /* ndef */ - /* Message-type dependent dump function. */ + /* Generic Hex/Ascii dump */ + DumpBuf(STREAM_DATA(msg->s), STREAM_SIZE(msg->s)); /* Sorry, deleted! */ +#else /* ndef */ +/* Message-type dependent dump function. */ #endif /* ndef */ - return; + return; #endif /* ORIGINAL_CODING */ } -void -msg_free (struct msg *msg) +void msg_free(struct msg *msg) { - if (msg->s) - stream_free (msg->s); + if (msg->s) + stream_free(msg->s); - XFREE (MTYPE_OSPF_API_MSG, msg); + XFREE(MTYPE_OSPF_API_MSG, msg); } /* Set sequence number of message */ -void -msg_set_seq (struct msg *msg, u_int32_t seqnr) +void msg_set_seq(struct msg *msg, u_int32_t seqnr) { - assert (msg); - msg->hdr.msgseq = htonl (seqnr); + assert(msg); + msg->hdr.msgseq = htonl(seqnr); } /* Get sequence number of message */ -u_int32_t -msg_get_seq (struct msg *msg) +u_int32_t msg_get_seq(struct msg *msg) { - assert (msg); - return ntohl (msg->hdr.msgseq); + assert(msg); + return ntohl(msg->hdr.msgseq); } /* ----------------------------------------------------------- @@ -264,178 +301,151 @@ msg_get_seq (struct msg *msg) * ----------------------------------------------------------- */ -struct msg_fifo * -msg_fifo_new () +struct msg_fifo *msg_fifo_new() { - return XCALLOC (MTYPE_OSPF_API_FIFO, sizeof (struct msg_fifo)); + return XCALLOC(MTYPE_OSPF_API_FIFO, sizeof(struct msg_fifo)); } /* Add new message to fifo. */ -void -msg_fifo_push (struct msg_fifo *fifo, struct msg *msg) +void msg_fifo_push(struct msg_fifo *fifo, struct msg *msg) { - if (fifo->tail) - fifo->tail->next = msg; - else - fifo->head = msg; + if (fifo->tail) + fifo->tail->next = msg; + else + fifo->head = msg; - fifo->tail = msg; - fifo->count++; + fifo->tail = msg; + fifo->count++; } /* Remove first message from fifo. */ -struct msg * -msg_fifo_pop (struct msg_fifo *fifo) +struct msg *msg_fifo_pop(struct msg_fifo *fifo) { - struct msg *msg; + struct msg *msg; - msg = fifo->head; - if (msg) - { - fifo->head = msg->next; + msg = fifo->head; + if (msg) { + fifo->head = msg->next; - if (fifo->head == NULL) - fifo->tail = NULL; + if (fifo->head == NULL) + fifo->tail = NULL; - fifo->count--; - } - return msg; + fifo->count--; + } + return msg; } /* Return first fifo entry but do not remove it. */ -struct msg * -msg_fifo_head (struct msg_fifo *fifo) +struct msg *msg_fifo_head(struct msg_fifo *fifo) { - return fifo->head; + return fifo->head; } /* Flush message fifo. */ -void -msg_fifo_flush (struct msg_fifo *fifo) +void msg_fifo_flush(struct msg_fifo *fifo) { - struct msg *op; - struct msg *next; + struct msg *op; + struct msg *next; - for (op = fifo->head; op; op = next) - { - next = op->next; - msg_free (op); - } + for (op = fifo->head; op; op = next) { + next = op->next; + msg_free(op); + } - fifo->head = fifo->tail = NULL; - fifo->count = 0; + fifo->head = fifo->tail = NULL; + fifo->count = 0; } /* Free API message fifo. */ -void -msg_fifo_free (struct msg_fifo *fifo) +void msg_fifo_free(struct msg_fifo *fifo) { - msg_fifo_flush (fifo); + msg_fifo_flush(fifo); - XFREE (MTYPE_OSPF_API_FIFO, fifo); + XFREE(MTYPE_OSPF_API_FIFO, fifo); } -struct msg * -msg_read (int fd) +struct msg *msg_read(int fd) { - struct msg *msg; - struct apimsghdr hdr; - u_char buf[OSPF_API_MAX_MSG_SIZE]; - int bodylen; - int rlen; - - /* Read message header */ - rlen = readn (fd, (u_char *) &hdr, sizeof (struct apimsghdr)); - - if (rlen < 0) - { - zlog_warn ("msg_read: readn %s", safe_strerror (errno)); - return NULL; - } - else if (rlen == 0) - { - zlog_warn ("msg_read: Connection closed by peer"); - return NULL; - } - else if (rlen != sizeof (struct apimsghdr)) - { - zlog_warn ("msg_read: Cannot read message header!"); - return NULL; - } - - /* Check version of API protocol */ - if (hdr.version != OSPF_API_VERSION) - { - zlog_warn ("msg_read: OSPF API protocol version mismatch"); - return NULL; - } - - /* Determine body length. */ - bodylen = ntohs (hdr.msglen); - if (bodylen > 0) - { - - /* Read message body */ - rlen = readn (fd, buf, bodylen); - if (rlen < 0) - { - zlog_warn ("msg_read: readn %s", safe_strerror (errno)); - return NULL; + struct msg *msg; + struct apimsghdr hdr; + u_char buf[OSPF_API_MAX_MSG_SIZE]; + int bodylen; + int rlen; + + /* Read message header */ + rlen = readn(fd, (u_char *)&hdr, sizeof(struct apimsghdr)); + + if (rlen < 0) { + zlog_warn("msg_read: readn %s", safe_strerror(errno)); + return NULL; + } else if (rlen == 0) { + zlog_warn("msg_read: Connection closed by peer"); + return NULL; + } else if (rlen != sizeof(struct apimsghdr)) { + zlog_warn("msg_read: Cannot read message header!"); + return NULL; } - else if (rlen == 0) - { - zlog_warn ("msg_read: Connection closed by peer"); - return NULL; + + /* Check version of API protocol */ + if (hdr.version != OSPF_API_VERSION) { + zlog_warn("msg_read: OSPF API protocol version mismatch"); + return NULL; } - else if (rlen != bodylen) - { - zlog_warn ("msg_read: Cannot read message body!"); - return NULL; + + /* Determine body length. */ + bodylen = ntohs(hdr.msglen); + if (bodylen > 0) { + + /* Read message body */ + rlen = readn(fd, buf, bodylen); + if (rlen < 0) { + zlog_warn("msg_read: readn %s", safe_strerror(errno)); + return NULL; + } else if (rlen == 0) { + zlog_warn("msg_read: Connection closed by peer"); + return NULL; + } else if (rlen != bodylen) { + zlog_warn("msg_read: Cannot read message body!"); + return NULL; + } } - } - /* Allocate new message */ - msg = msg_new (hdr.msgtype, buf, ntohl (hdr.msgseq), ntohs (hdr.msglen)); + /* Allocate new message */ + msg = msg_new(hdr.msgtype, buf, ntohl(hdr.msgseq), ntohs(hdr.msglen)); - return msg; + return msg; } -int -msg_write (int fd, struct msg *msg) +int msg_write(int fd, struct msg *msg) { - u_char buf[OSPF_API_MAX_MSG_SIZE]; - int l; - int wlen; - - assert (msg); - assert (msg->s); - - /* Length of message including header */ - l = sizeof (struct apimsghdr) + ntohs (msg->hdr.msglen); - - /* Make contiguous memory buffer for message */ - memcpy (buf, &msg->hdr, sizeof (struct apimsghdr)); - memcpy (buf + sizeof (struct apimsghdr), STREAM_DATA (msg->s), - ntohs (msg->hdr.msglen)); - - wlen = writen (fd, buf, l); - if (wlen < 0) - { - zlog_warn ("msg_write: writen %s", safe_strerror (errno)); - return -1; - } - else if (wlen == 0) - { - zlog_warn ("msg_write: Connection closed by peer"); - return -1; - } - else if (wlen != l) - { - zlog_warn ("msg_write: Cannot write API message"); - return -1; - } - return 0; + u_char buf[OSPF_API_MAX_MSG_SIZE]; + int l; + int wlen; + + assert(msg); + assert(msg->s); + + /* Length of message including header */ + l = sizeof(struct apimsghdr) + ntohs(msg->hdr.msglen); + + /* Make contiguous memory buffer for message */ + memcpy(buf, &msg->hdr, sizeof(struct apimsghdr)); + memcpy(buf + sizeof(struct apimsghdr), STREAM_DATA(msg->s), + ntohs(msg->hdr.msglen)); + + wlen = writen(fd, buf, l); + if (wlen < 0) { + zlog_warn("msg_write: writen %s", safe_strerror(errno)); + return -1; + } else if (wlen == 0) { + zlog_warn("msg_write: Connection closed by peer"); + return -1; + } else if (wlen != l) { + zlog_warn("msg_write: Cannot write API message"); + return -1; + } + return 0; } /* ----------------------------------------------------------- @@ -443,207 +453,201 @@ msg_write (int fd, struct msg *msg) * ----------------------------------------------------------- */ -struct msg * -new_msg_register_opaque_type (u_int32_t seqnum, u_char ltype, u_char otype) +struct msg *new_msg_register_opaque_type(u_int32_t seqnum, u_char ltype, + u_char otype) { - struct msg_register_opaque_type rmsg; + struct msg_register_opaque_type rmsg; - rmsg.lsatype = ltype; - rmsg.opaquetype = otype; - memset (&rmsg.pad, 0, sizeof (rmsg.pad)); + rmsg.lsatype = ltype; + rmsg.opaquetype = otype; + memset(&rmsg.pad, 0, sizeof(rmsg.pad)); - return msg_new (MSG_REGISTER_OPAQUETYPE, &rmsg, seqnum, - sizeof (struct msg_register_opaque_type)); + return msg_new(MSG_REGISTER_OPAQUETYPE, &rmsg, seqnum, + sizeof(struct msg_register_opaque_type)); } -struct msg * -new_msg_register_event (u_int32_t seqnum, struct lsa_filter_type *filter) +struct msg *new_msg_register_event(u_int32_t seqnum, + struct lsa_filter_type *filter) { - u_char buf[OSPF_API_MAX_MSG_SIZE]; - struct msg_register_event *emsg; - unsigned int len; - - emsg = (struct msg_register_event *) buf; - len = sizeof (struct msg_register_event) + - filter->num_areas * sizeof (struct in_addr); - emsg->filter.typemask = htons (filter->typemask); - emsg->filter.origin = filter->origin; - emsg->filter.num_areas = filter->num_areas; - if (len > sizeof (buf)) - len = sizeof(buf); - /* API broken - missing memcpy to fill data */ - return msg_new (MSG_REGISTER_EVENT, emsg, seqnum, len); + u_char buf[OSPF_API_MAX_MSG_SIZE]; + struct msg_register_event *emsg; + unsigned int len; + + emsg = (struct msg_register_event *)buf; + len = sizeof(struct msg_register_event) + + filter->num_areas * sizeof(struct in_addr); + emsg->filter.typemask = htons(filter->typemask); + emsg->filter.origin = filter->origin; + emsg->filter.num_areas = filter->num_areas; + if (len > sizeof(buf)) + len = sizeof(buf); + /* API broken - missing memcpy to fill data */ + return msg_new(MSG_REGISTER_EVENT, emsg, seqnum, len); } -struct msg * -new_msg_sync_lsdb (u_int32_t seqnum, struct lsa_filter_type *filter) +struct msg *new_msg_sync_lsdb(u_int32_t seqnum, struct lsa_filter_type *filter) { - u_char buf[OSPF_API_MAX_MSG_SIZE]; - struct msg_sync_lsdb *smsg; - unsigned int len; - - smsg = (struct msg_sync_lsdb *) buf; - len = sizeof (struct msg_sync_lsdb) + - filter->num_areas * sizeof (struct in_addr); - smsg->filter.typemask = htons (filter->typemask); - smsg->filter.origin = filter->origin; - smsg->filter.num_areas = filter->num_areas; - if (len > sizeof (buf)) - len = sizeof(buf); - /* API broken - missing memcpy to fill data */ - return msg_new (MSG_SYNC_LSDB, smsg, seqnum, len); + u_char buf[OSPF_API_MAX_MSG_SIZE]; + struct msg_sync_lsdb *smsg; + unsigned int len; + + smsg = (struct msg_sync_lsdb *)buf; + len = sizeof(struct msg_sync_lsdb) + + filter->num_areas * sizeof(struct in_addr); + smsg->filter.typemask = htons(filter->typemask); + smsg->filter.origin = filter->origin; + smsg->filter.num_areas = filter->num_areas; + if (len > sizeof(buf)) + len = sizeof(buf); + /* API broken - missing memcpy to fill data */ + return msg_new(MSG_SYNC_LSDB, smsg, seqnum, len); } -struct msg * -new_msg_originate_request (u_int32_t seqnum, - struct in_addr ifaddr, - struct in_addr area_id, struct lsa_header *data) +struct msg *new_msg_originate_request(u_int32_t seqnum, struct in_addr ifaddr, + struct in_addr area_id, + struct lsa_header *data) { - struct msg_originate_request *omsg; - unsigned int omsglen; - char buf[OSPF_API_MAX_MSG_SIZE]; - - omsg = (struct msg_originate_request *) buf; - omsg->ifaddr = ifaddr; - omsg->area_id = area_id; - - omsglen = ntohs (data->length); - if (omsglen > sizeof (buf) - offsetof (struct msg_originate_request, data)) - omsglen = sizeof (buf) - offsetof (struct msg_originate_request, data); - memcpy (&omsg->data, data, omsglen); - omsglen += sizeof (struct msg_originate_request) - sizeof (struct lsa_header); - - return msg_new (MSG_ORIGINATE_REQUEST, omsg, seqnum, omsglen); + struct msg_originate_request *omsg; + unsigned int omsglen; + char buf[OSPF_API_MAX_MSG_SIZE]; + + omsg = (struct msg_originate_request *)buf; + omsg->ifaddr = ifaddr; + omsg->area_id = area_id; + + omsglen = ntohs(data->length); + if (omsglen + > sizeof(buf) - offsetof(struct msg_originate_request, data)) + omsglen = sizeof(buf) + - offsetof(struct msg_originate_request, data); + memcpy(&omsg->data, data, omsglen); + omsglen += sizeof(struct msg_originate_request) + - sizeof(struct lsa_header); + + return msg_new(MSG_ORIGINATE_REQUEST, omsg, seqnum, omsglen); } -struct msg * -new_msg_delete_request (u_int32_t seqnum, - struct in_addr area_id, u_char lsa_type, - u_char opaque_type, u_int32_t opaque_id) +struct msg *new_msg_delete_request(u_int32_t seqnum, struct in_addr area_id, + u_char lsa_type, u_char opaque_type, + u_int32_t opaque_id) { - struct msg_delete_request dmsg; - dmsg.area_id = area_id; - dmsg.lsa_type = lsa_type; - dmsg.opaque_type = opaque_type; - dmsg.opaque_id = htonl (opaque_id); - memset (&dmsg.pad, 0, sizeof (dmsg.pad)); - - return msg_new (MSG_DELETE_REQUEST, &dmsg, seqnum, - sizeof (struct msg_delete_request)); + struct msg_delete_request dmsg; + dmsg.area_id = area_id; + dmsg.lsa_type = lsa_type; + dmsg.opaque_type = opaque_type; + dmsg.opaque_id = htonl(opaque_id); + memset(&dmsg.pad, 0, sizeof(dmsg.pad)); + + return msg_new(MSG_DELETE_REQUEST, &dmsg, seqnum, + sizeof(struct msg_delete_request)); } -struct msg * -new_msg_reply (u_int32_t seqnr, u_char rc) +struct msg *new_msg_reply(u_int32_t seqnr, u_char rc) { - struct msg *msg; - struct msg_reply rmsg; + struct msg *msg; + struct msg_reply rmsg; - /* Set return code */ - rmsg.errcode = rc; - memset (&rmsg.pad, 0, sizeof (rmsg.pad)); + /* Set return code */ + rmsg.errcode = rc; + memset(&rmsg.pad, 0, sizeof(rmsg.pad)); - msg = msg_new (MSG_REPLY, &rmsg, seqnr, sizeof (struct msg_reply)); + msg = msg_new(MSG_REPLY, &rmsg, seqnr, sizeof(struct msg_reply)); - return msg; + return msg; } -struct msg * -new_msg_ready_notify (u_int32_t seqnr, u_char lsa_type, - u_char opaque_type, struct in_addr addr) +struct msg *new_msg_ready_notify(u_int32_t seqnr, u_char lsa_type, + u_char opaque_type, struct in_addr addr) { - struct msg_ready_notify rmsg; + struct msg_ready_notify rmsg; - rmsg.lsa_type = lsa_type; - rmsg.opaque_type = opaque_type; - memset (&rmsg.pad, 0, sizeof (rmsg.pad)); - rmsg.addr = addr; + rmsg.lsa_type = lsa_type; + rmsg.opaque_type = opaque_type; + memset(&rmsg.pad, 0, sizeof(rmsg.pad)); + rmsg.addr = addr; - return msg_new (MSG_READY_NOTIFY, &rmsg, seqnr, - sizeof (struct msg_ready_notify)); + return msg_new(MSG_READY_NOTIFY, &rmsg, seqnr, + sizeof(struct msg_ready_notify)); } -struct msg * -new_msg_new_if (u_int32_t seqnr, - struct in_addr ifaddr, struct in_addr area_id) +struct msg *new_msg_new_if(u_int32_t seqnr, struct in_addr ifaddr, + struct in_addr area_id) { - struct msg_new_if nmsg; + struct msg_new_if nmsg; - nmsg.ifaddr = ifaddr; - nmsg.area_id = area_id; + nmsg.ifaddr = ifaddr; + nmsg.area_id = area_id; - return msg_new (MSG_NEW_IF, &nmsg, seqnr, sizeof (struct msg_new_if)); + return msg_new(MSG_NEW_IF, &nmsg, seqnr, sizeof(struct msg_new_if)); } -struct msg * -new_msg_del_if (u_int32_t seqnr, struct in_addr ifaddr) +struct msg *new_msg_del_if(u_int32_t seqnr, struct in_addr ifaddr) { - struct msg_del_if dmsg; + struct msg_del_if dmsg; - dmsg.ifaddr = ifaddr; + dmsg.ifaddr = ifaddr; - return msg_new (MSG_DEL_IF, &dmsg, seqnr, sizeof (struct msg_del_if)); + return msg_new(MSG_DEL_IF, &dmsg, seqnr, sizeof(struct msg_del_if)); } -struct msg * -new_msg_ism_change (u_int32_t seqnr, struct in_addr ifaddr, - struct in_addr area_id, u_char status) +struct msg *new_msg_ism_change(u_int32_t seqnr, struct in_addr ifaddr, + struct in_addr area_id, u_char status) { - struct msg_ism_change imsg; + struct msg_ism_change imsg; - imsg.ifaddr = ifaddr; - imsg.area_id = area_id; - imsg.status = status; - memset (&imsg.pad, 0, sizeof (imsg.pad)); + imsg.ifaddr = ifaddr; + imsg.area_id = area_id; + imsg.status = status; + memset(&imsg.pad, 0, sizeof(imsg.pad)); - return msg_new (MSG_ISM_CHANGE, &imsg, seqnr, - sizeof (struct msg_ism_change)); + return msg_new(MSG_ISM_CHANGE, &imsg, seqnr, + sizeof(struct msg_ism_change)); } -struct msg * -new_msg_nsm_change (u_int32_t seqnr, struct in_addr ifaddr, - struct in_addr nbraddr, - struct in_addr router_id, u_char status) +struct msg *new_msg_nsm_change(u_int32_t seqnr, struct in_addr ifaddr, + struct in_addr nbraddr, struct in_addr router_id, + u_char status) { - struct msg_nsm_change nmsg; + struct msg_nsm_change nmsg; - nmsg.ifaddr = ifaddr; - nmsg.nbraddr = nbraddr; - nmsg.router_id = router_id; - nmsg.status = status; - memset (&nmsg.pad, 0, sizeof (nmsg.pad)); + nmsg.ifaddr = ifaddr; + nmsg.nbraddr = nbraddr; + nmsg.router_id = router_id; + nmsg.status = status; + memset(&nmsg.pad, 0, sizeof(nmsg.pad)); - return msg_new (MSG_NSM_CHANGE, &nmsg, seqnr, - sizeof (struct msg_nsm_change)); + return msg_new(MSG_NSM_CHANGE, &nmsg, seqnr, + sizeof(struct msg_nsm_change)); } -struct msg * -new_msg_lsa_change_notify (u_char msgtype, - u_int32_t seqnum, - struct in_addr ifaddr, - struct in_addr area_id, - u_char is_self_originated, struct lsa_header *data) +struct msg *new_msg_lsa_change_notify(u_char msgtype, u_int32_t seqnum, + struct in_addr ifaddr, + struct in_addr area_id, + u_char is_self_originated, + struct lsa_header *data) { - u_char buf[OSPF_API_MAX_MSG_SIZE]; - struct msg_lsa_change_notify *nmsg; - unsigned int len; - - assert (data); - - nmsg = (struct msg_lsa_change_notify *) buf; - nmsg->ifaddr = ifaddr; - nmsg->area_id = area_id; - nmsg->is_self_originated = is_self_originated; - memset (&nmsg->pad, 0, sizeof (nmsg->pad)); - - len = ntohs (data->length); - if (len > sizeof (buf) - offsetof (struct msg_lsa_change_notify, data)) - len = sizeof (buf) - offsetof (struct msg_lsa_change_notify, data); - memcpy (&nmsg->data, data, len); - len += sizeof (struct msg_lsa_change_notify) - sizeof (struct lsa_header); - - return msg_new (msgtype, nmsg, seqnum, len); + u_char buf[OSPF_API_MAX_MSG_SIZE]; + struct msg_lsa_change_notify *nmsg; + unsigned int len; + + assert(data); + + nmsg = (struct msg_lsa_change_notify *)buf; + nmsg->ifaddr = ifaddr; + nmsg->area_id = area_id; + nmsg->is_self_originated = is_self_originated; + memset(&nmsg->pad, 0, sizeof(nmsg->pad)); + + len = ntohs(data->length); + if (len > sizeof(buf) - offsetof(struct msg_lsa_change_notify, data)) + len = sizeof(buf) + - offsetof(struct msg_lsa_change_notify, data); + memcpy(&nmsg->data, data, len); + len += sizeof(struct msg_lsa_change_notify) - sizeof(struct lsa_header); + + return msg_new(msgtype, nmsg, seqnum, len); } #endif /* SUPPORT_OSPF_API */ |
