diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2019-05-10 16:43:47 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2019-05-10 16:43:47 +0000 |
| commit | 7f75bbd0662b0ec96bc673515154601628dba3b3 (patch) | |
| tree | 4eb5d1d51411b9e3cfe64eea8cba31b7e98d8dd0 /lib/libnetgraph/msg.c | |
| parent | 0f78871d44e7e5d8cfd600d06caf9116d937fd50 (diff) | |
Notes
Diffstat (limited to 'lib/libnetgraph/msg.c')
| -rw-r--r-- | lib/libnetgraph/msg.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/lib/libnetgraph/msg.c b/lib/libnetgraph/msg.c index c94645997acb..061bdc233ff5 100644 --- a/lib/libnetgraph/msg.c +++ b/lib/libnetgraph/msg.c @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include <sys/types.h> #include <sys/socket.h> #include <stdarg.h> +#include <stdatomic.h> #include <netgraph/ng_message.h> #include <netgraph/ng_socket.h> @@ -51,7 +52,7 @@ __FBSDID("$FreeBSD$"); #include "internal.h" /* Next message token value */ -static int gMsgId; +static _Atomic(unsigned int) gMsgId; /* For delivering both messages and replies */ static int NgDeliverMsg(int cs, const char *path, @@ -72,9 +73,7 @@ NgSendMsg(int cs, const char *path, memset(&msg, 0, sizeof(msg)); msg.header.version = NG_VERSION; msg.header.typecookie = cookie; - if (++gMsgId < 0) - gMsgId = 1; - msg.header.token = gMsgId; + msg.header.token = atomic_fetch_add(&gMsgId, 1) & INT_MAX; msg.header.flags = NGF_ORIG; msg.header.cmd = cmd; snprintf((char *)msg.header.cmdstr, NG_CMDSTRSIZ, "cmd%d", cmd); @@ -143,9 +142,7 @@ NgSendAsciiMsg(int cs, const char *path, const char *fmt, ...) /* Now send binary version */ binary = (struct ng_mesg *)reply->data; - if (++gMsgId < 0) - gMsgId = 1; - binary->header.token = gMsgId; + binary->header.token = atomic_fetch_add(&gMsgId, 1) & INT_MAX; binary->header.version = NG_VERSION; if (NgDeliverMsg(cs, path, binary, binary->data, binary->header.arglen) < 0) { |
