Skip to content

Commit a1fd936

Browse files
author
logwang
committed
FreeBSD: add module netgraph.
1 parent 20be49f commit a1fd936

File tree

178 files changed

+90496
-111
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

178 files changed

+90496
-111
lines changed

freebsd/net/if_spppsubr.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5370,8 +5370,10 @@ sppp_proto_name(u_short proto)
53705370
static void
53715371
sppp_print_bytes(const u_char *p, u_short len)
53725372
{
5373+
#ifndef FSTACK
53735374
if (len)
53745375
log(-1, " %*D", len, p, "-");
5376+
#endif
53755377
}
53765378

53775379
static void

freebsd/netgraph/NOTES

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
$FreeBSD$
2+
Development ideas..
3+
4+
Archie's suggestions... :-)
5+
6+
- There should be a new malloc type: M_NETGRAPH
7+
[DONE]
8+
- all mallocs/frees now changed to use this.. JRE
9+
- might further split them out some time.
10+
11+
- Use MALLOC and FREE macros instead of direct function calls
12+
[DONE]
13+
- They allow conditional compilation which keeps
14+
statistics & counters on various memory allocation
15+
(or so it seems)
16+
- Now tend to have NG_FREE_XX() macros. they
17+
allow better debugging
18+
19+
- In struct ng_mesg: at least make "header" into "hdr", if not
20+
getting rid of it altogether. It doesn't seem necessary and
21+
makes all my C code lines too long.
22+
23+
- I understand.. one thought however.. consider..
24+
if char data[0] were not legal, so that data[1] needed to be
25+
used instead, then the only way to get the size of the header
26+
would be sizeof(msg.header) as sizeof(msg) would include the dummy
27+
following bytes. this is a portability issue and I hope
28+
it will be ported eventually :)
29+
30+
- Baloney! you can use sizeof(msg) - 1 then.. or just
31+
make it a macro, then its always portable:
32+
33+
#ifdef __GNU_C__
34+
#define NG_MSG_HDR_SIZE (sizeof(struct ng_message))
35+
#else
36+
#define NG_MSG_HDR_SIZE (sizeof(struct ng_message) - 1)
37+
#endif
38+
39+
- inertia rules :-b
40+
41+
42+
- Have a user level program to print out and manipulate nodes, etc.
43+
- [DONE]
44+
see ngctl, nghook
45+
46+
- "Netgraph global" flags to turn on tracing, etc.
47+
48+
- ngctl needs to be rewritten using libnetgraph. Also it needs a
49+
command to list all existing nodes (in case you don't know the
50+
name of what you're looking for).
51+
[DONE]
52+
53+
- Need a way to get a list of ALL nodes.
54+
[DONE]
55+
- see NGM_LISTNODES
56+
57+
- Enhance "netstat" to display all netgraph nodes -- or at least
58+
all netgraph socket nodes.
59+
[DONE]
60+
61+
- BUG FIX: bind() on a socket should neither require nor allow a
62+
colon character at the end of the name. Note ngctl allows you
63+
to do it either way!
64+
[DONE] (I think)
65+
- bind on a control socket has been disabled
66+
it was a bad idea.
67+
68+
- Need to implement passing meta information through socket nodes
69+
using sendmsg() and recvmsg().
70+
71+
- Stuff needing to be added to manual:
72+
73+
- Awareness of SPL level, use ng_queue*() functions when necessary.
74+
- Malloc all memory with type M_NETGRAPH. -DONE
75+
- Write code so it can be an LKM or built into the kernel.. this means
76+
be careful with things like #ifdef INET.
77+
- All nodes assume that all data mbufs have the M_PKTHDR flag set!
78+
The ng_send_data() and related functions should have an
79+
#ifdef DIAGNOSTIC check to check this assumption for every mbuf.
80+
-DONE with INVARIANTS. Framework should test this more.
81+
- More generally, netgraph code should make liberal use of the
82+
#ifdef DIAGNOSTIC definition.
83+
-INVARIANTS.
84+
- Since data and messages are sent functionally, programmers need
85+
to watch out for infinite feedback loops. Should ng_base.c detect
86+
this automatically?
87+
- I've been thinking about this. each node could have a 'colour'
88+
which is set to the colour of the packet as you pass through.
89+
hitting a node already of your colour would abort. Each packet
90+
has another (incremented) colour.
91+
-new 'item' type can hold a hopcount...
92+
93+
NEW in 2001
94+
All piggyback responses have gone away.
95+
use the node ID in the return address field for quick response delivery.
96+
97+
Every node has a queue, plus there is a list of nodes that have queued work.
98+
Extensive use of Mutexes. Getting in shape for SMP.
99+
100+
Messages and data are deliverd in a new form. An Item now has
101+
all information needed to queue such a request and deliver it later, so
102+
it is now the basis of all data transfer since any transfer may need to
103+
be queued.

0 commit comments

Comments
 (0)