summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ChangeLog8
-rw-r--r--lib/stream.c108
-rw-r--r--lib/stream.h11
3 files changed, 52 insertions, 75 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 41308ff6..81865fb3 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,11 @@
+2005-02-09 Paul Jakma <paul.jakma@sun.com>
+
+ * stream.h: Remove putp. Update reference to putp with endp.
+ Add stream_forward_endp, which daemons were doing manually.
+ Rename stream_forward to stream_forward_getp.
+ stream.c: Remove/update references to putp.
+ introduce stream_forward_endp.
+
2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* zebra.h: Change macro definitions SET_FLAG and UNSET_FLAG
diff --git a/lib/stream.c b/lib/stream.c
index 1b85b130..7a8bc458 100644
--- a/lib/stream.c
+++ b/lib/stream.c
@@ -35,8 +35,8 @@
*/
#define CHECK_SIZE(S, Z) \
- if (((S)->putp + (Z)) > (S)->size) \
- (Z) = (S)->size - (S)->putp;
+ if (((S)->endp + (Z)) > (S)->size) \
+ (Z) = (S)->size - (S)->endp;
/* Stream is fixed length buffer for network output/input. */
@@ -73,12 +73,6 @@ stream_get_getp (struct stream *s)
}
unsigned long
-stream_get_putp (struct stream *s)
-{
- return s->putp;
-}
-
-unsigned long
stream_get_endp (struct stream *s)
{
return s->endp;
@@ -97,17 +91,17 @@ stream_set_getp (struct stream *s, unsigned long pos)
s->getp = pos;
}
+/* Forward pointer. */
void
-stream_set_putp (struct stream *s, unsigned long pos)
+stream_forward_getp (struct stream *s, int size)
{
- s->putp = pos;
+ s->getp += size;
}
-/* Forward pointer. */
void
-stream_forward (struct stream *s, int size)
+stream_forward_endp (struct stream *s, int size)
{
- s->getp += size;
+ s->endp += size;
}
/* Copy from stream to destination. */
@@ -194,25 +188,22 @@ stream_put (struct stream *s, void *src, size_t size)
CHECK_SIZE(s, size);
if (src)
- memcpy (s->data + s->putp, src, size);
+ memcpy (s->data + s->endp, src, size);
else
- memset (s->data + s->putp, 0, size);
+ memset (s->data + s->endp, 0, size);
- s->putp += size;
- if (s->putp > s->endp)
- s->endp = s->putp;
+ s->endp += size;
}
/* Put character to the stream. */
int
stream_putc (struct stream *s, u_char c)
{
- if (s->putp >= s->size) return 0;
+ if (s->endp >= s->size) return 0;
+
+ s->data[s->endp] = c;
+ s->endp++;
- s->data[s->putp] = c;
- s->putp++;
- if (s->putp > s->endp)
- s->endp = s->putp;
return 1;
}
@@ -220,13 +211,11 @@ stream_putc (struct stream *s, u_char c)
int
stream_putw (struct stream *s, u_int16_t w)
{
- if ((s->size - s->putp) < 2) return 0;
+ if ((s->size - s->endp) < 2) return 0;
- s->data[s->putp++] = (u_char)(w >> 8);
- s->data[s->putp++] = (u_char) w;
+ s->data[s->endp++] = (u_char)(w >> 8);
+ s->data[s->endp++] = (u_char) w;
- if (s->putp > s->endp)
- s->endp = s->putp;
return 2;
}
@@ -234,15 +223,13 @@ stream_putw (struct stream *s, u_int16_t w)
int
stream_putl (struct stream *s, u_int32_t l)
{
- if ((s->size - s->putp) < 4) return 0;
+ if ((s->size - s->endp) < 4) return 0;
- s->data[s->putp++] = (u_char)(l >> 24);
- s->data[s->putp++] = (u_char)(l >> 16);
- s->data[s->putp++] = (u_char)(l >> 8);
- s->data[s->putp++] = (u_char)l;
+ s->data[s->endp++] = (u_char)(l >> 24);
+ s->data[s->endp++] = (u_char)(l >> 16);
+ s->data[s->endp++] = (u_char)(l >> 8);
+ s->data[s->endp++] = (u_char)l;
- if (s->putp > s->endp)
- s->endp = s->putp;
return 4;
}
@@ -275,14 +262,12 @@ stream_putl_at (struct stream *s, unsigned long putp, u_int32_t l)
int
stream_put_ipv4 (struct stream *s, u_int32_t l)
{
- if ((s->size - s->putp) < 4)
+ if ((s->size - s->endp) < 4)
return 0;
- memcpy (s->data + s->putp, &l, 4);
- s->putp += 4;
+ memcpy (s->data + s->endp, &l, 4);
+ s->endp += 4;
- if (s->putp > s->endp)
- s->endp = s->putp;
return 4;
}
@@ -290,14 +275,12 @@ stream_put_ipv4 (struct stream *s, u_int32_t l)
int
stream_put_in_addr (struct stream *s, struct in_addr *addr)
{
- if ((s->size - s->putp) < 4)
+ if ((s->size - s->endp) < 4)
return 0;
- memcpy (s->data + s->putp, addr, 4);
- s->putp += 4;
+ memcpy (s->data + s->endp, addr, 4);
+ s->endp += 4;
- if (s->putp > s->endp)
- s->endp = s->putp;
return 4;
}
@@ -309,15 +292,12 @@ stream_put_prefix (struct stream *s, struct prefix *p)
psize = PSIZE (p->prefixlen);
- if ((s->size - s->putp) < psize) return 0;
+ if ((s->size - s->endp) < psize) return 0;
stream_putc (s, p->prefixlen);
- memcpy (s->data + s->putp, &p->u.prefix, psize);
- s->putp += psize;
+ memcpy (s->data + s->endp, &p->u.prefix, psize);
+ s->endp += psize;
- if (s->putp > s->endp)
- s->endp = s->putp;
-
return psize;
}
@@ -327,13 +307,11 @@ stream_read (struct stream *s, int fd, size_t size)
{
int nbytes;
- nbytes = readn (fd, s->data + s->putp, size);
+ nbytes = readn (fd, s->data + s->endp, size);
if (nbytes > 0)
- {
- s->putp += nbytes;
- s->endp += nbytes;
- }
+ s->endp += nbytes;
+
return nbytes;
}
@@ -346,14 +324,12 @@ stream_read_unblock (struct stream *s, int fd, size_t size)
val = fcntl (fd, F_GETFL, 0);
fcntl (fd, F_SETFL, val|O_NONBLOCK);
- nbytes = read (fd, s->data + s->putp, size);
+ nbytes = read (fd, s->data + s->endp, size);
fcntl (fd, F_SETFL, val);
if (nbytes > 0)
- {
- s->putp += nbytes;
- s->endp += nbytes;
- }
+ s->endp += nbytes;
+
return nbytes;
}
@@ -364,10 +340,9 @@ stream_write (struct stream *s, u_char *ptr, size_t size)
CHECK_SIZE(s, size);
- memcpy (s->data + s->putp, ptr, size);
- s->putp += size;
- if (s->putp > s->endp)
- s->endp = s->putp;
+ memcpy (s->data + s->endp, ptr, size);
+ s->endp += size;
+
return size;
}
@@ -382,7 +357,7 @@ stream_pnt (struct stream *s)
int
stream_empty (struct stream *s)
{
- if (s->putp == 0 && s->endp == 0 && s->getp == 0)
+ if (s->endp == 0 && s->getp == 0)
return 1;
else
return 0;
@@ -392,7 +367,6 @@ stream_empty (struct stream *s)
void
stream_reset (struct stream *s)
{
- s->putp = 0;
s->endp = 0;
s->getp = 0;
}
diff --git a/lib/stream.h b/lib/stream.h
index f7a94ea3..c7e4ffbf 100644
--- a/lib/stream.h
+++ b/lib/stream.h
@@ -32,9 +32,6 @@ struct stream
unsigned char *data;
- /* Put pointer. */
- unsigned long putp;
-
/* Get pointer. */
unsigned long getp;
@@ -57,7 +54,7 @@ struct stream_fifo
/* Utility macros. */
#define STREAM_PNT(S) ((S)->data + (S)->getp)
#define STREAM_SIZE(S) ((S)->size)
-#define STREAM_REMAIN(S) ((S)->size - (S)->putp)
+#define STREAM_REMAIN(S) ((S)->size - (S)->endp)
#define STREAM_DATA(S) ((S)->data)
/* Stream prototypes. */
@@ -65,15 +62,13 @@ struct stream *stream_new (size_t);
void stream_free (struct stream *);
unsigned long stream_get_getp (struct stream *);
-unsigned long stream_get_putp (struct stream *);
unsigned long stream_get_endp (struct stream *);
unsigned long stream_get_size (struct stream *);
u_char *stream_get_data (struct stream *);
void stream_set_getp (struct stream *, unsigned long);
-void stream_set_putp (struct stream *, unsigned long);
-
-void stream_forward (struct stream *, int);
+void stream_forward_getp (struct stream *, int);
+void stream_forward_endp (struct stream *, int);
void stream_put (struct stream *, void *, size_t);
int stream_putc (struct stream *, u_char);