summaryrefslogtreecommitdiffstats
path: root/sys/netgraph/ng_pppoe.c
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1999-11-14 17:26:58 +0000
committerjulian <julian@FreeBSD.org>1999-11-14 17:26:58 +0000
commit1adef4ea81d56d227a9a356795f331fdfd35d9ed (patch)
tree8f841f220b52e7361d580a26f2495a32f1c1ccb9 /sys/netgraph/ng_pppoe.c
parent83affd600f40e3a73f4f4275c496fffff63cb23d (diff)
downloadFreeBSD-src-1adef4ea81d56d227a9a356795f331fdfd35d9ed.zip
FreeBSD-src-1adef4ea81d56d227a9a356795f331fdfd35d9ed.tar.gz
Rework some tag handling, prompted by Brian Somers.
Diffstat (limited to 'sys/netgraph/ng_pppoe.c')
-rw-r--r--sys/netgraph/ng_pppoe.c60
1 files changed, 25 insertions, 35 deletions
diff --git a/sys/netgraph/ng_pppoe.c b/sys/netgraph/ng_pppoe.c
index 61a5ad7..f91f799 100644
--- a/sys/netgraph/ng_pppoe.c
+++ b/sys/netgraph/ng_pppoe.c
@@ -746,8 +746,8 @@ AAA
uniqtag.hdr.tag_len = htons((u_int16_t)sizeof(uniqtag.data));
uniqtag.data.pointer = sp;
init_tags(sp);
- insert_tag(sp, &uniqtag.hdr);
insert_tag(sp, &sp->neg->service.hdr);
+ insert_tag(sp, &uniqtag.hdr);
make_packet(sp);
sendpacket(sp);
}
@@ -769,7 +769,7 @@ ng_pppoe_rcvdata(hook_p hook, struct mbuf *m, meta_p meta)
u_int16_t session;
u_int16_t length;
u_int8_t code;
- struct pppoe_tag *tag = NULL;
+ struct pppoe_tag *utag = NULL, *tag = NULL;
hook_p sendhook;
struct {
struct pppoe_tag hdr;
@@ -865,14 +865,14 @@ AAA
* Received #2, now send #3
* For now simply accept the first we receive.
*/
- tag = get_tag(ph, PTT_HOST_UNIQ);
- if ((tag == NULL)
- || (ntohs(tag->tag_len) != sizeof(sp))) {
+ utag = get_tag(ph, PTT_HOST_UNIQ);
+ if ((utag == NULL)
+ || (ntohs(utag->tag_len) != sizeof(sp))) {
printf("no host unique field\n");
LEAVE(ENETUNREACH);
}
- sendhook = pppoe_finduniq(node, tag);
+ sendhook = pppoe_finduniq(node, utag);
if (sendhook == NULL) {
printf("no matching session\n");
LEAVE(ENETUNREACH);
@@ -904,13 +904,11 @@ AAA
neg->pkt->pkt_header.ph.code = PADR_CODE;
init_tags(sp);
insert_tag(sp, &neg->service.hdr); /* Service */
- insert_tag(sp, tag); /* Host Unique */
- tag = get_tag(ph, PTT_AC_COOKIE);
- if (tag)
- insert_tag(sp, tag); /* return cookie */
- tag = get_tag(ph, PTT_AC_NAME);
- if (tag)
+ if ((tag = get_tag(ph, PTT_AC_COOKIE)))
insert_tag(sp, tag); /* return cookie */
+ if ((tag = get_tag(ph, PTT_AC_NAME)))
+ insert_tag(sp, tag); /* return it */
+ insert_tag(sp, utag); /* Host Unique */
scan_tags(sp, ph);
make_packet(sp);
sp->state = PPPOE_SREQ;
@@ -923,13 +921,13 @@ AAA
* Use the ac_cookie tag to find the
* hook this is in response to.
*/
- tag = get_tag(ph, PTT_AC_COOKIE);
- if ((tag == NULL)
- || (ntohs(tag->tag_len) != sizeof(sp))) {
+ utag = get_tag(ph, PTT_AC_COOKIE);
+ if ((utag == NULL)
+ || (ntohs(utag->tag_len) != sizeof(sp))) {
LEAVE(ENETUNREACH);
}
- sendhook = pppoe_finduniq(node, tag);
+ sendhook = pppoe_finduniq(node, utag);
if (sendhook == NULL) {
LEAVE(ENETUNREACH);
}
@@ -968,15 +966,11 @@ AAA
*/
init_tags(sp);
insert_tag(sp, &neg->ac_name.hdr); /* AC_NAME */
- insert_tag(sp, tag); /* ac_cookie */
- tag = get_tag(ph, PTT_SRV_NAME);
- if (tag) {
+ if ((get_tag(ph, PTT_SRV_NAME)))
insert_tag(sp, tag);/* return service */
- }
- tag = get_tag(ph, PTT_HOST_UNIQ);
- if (tag && ntohs(tag->tag_len) != sizeof(sp)) {
+ if ((tag = get_tag(ph, PTT_HOST_UNIQ)))
insert_tag(sp, tag); /* return it */
- }
+ insert_tag(sp, utag); /* ac_cookie */
scan_tags(sp, ph);
make_packet(sp);
sp->state = PPPOE_NEWCONNECTED;
@@ -1006,13 +1000,13 @@ AAA
* Also make sure the pre-made header is
* correct and set us into Session mode.
*/
- tag = get_tag(ph, PTT_HOST_UNIQ);
- if ((tag == NULL)
- || (ntohs(tag->tag_len) != sizeof(sp))) {
+ utag = get_tag(ph, PTT_HOST_UNIQ);
+ if ((utag == NULL)
+ || (ntohs(utag->tag_len) != sizeof(sp))) {
LEAVE (ENETUNREACH);
break;
}
- sendhook = pppoe_finduniq(node, tag);
+ sendhook = pppoe_finduniq(node, utag);
if (sendhook == NULL) {
LEAVE(ENETUNREACH);
}
@@ -1185,15 +1179,11 @@ AAA
uniqtag.data.pointer = sp;
init_tags(sp);
insert_tag(sp, &neg->ac_name.hdr); /* AC_NAME */
- tag = get_tag(ph, PTT_HOST_UNIQ);
- if (tag && ntohs(tag->tag_len) == sizeof(sp)) {
- insert_tag(sp, tag); /* returned hostunique */
- }
- insert_tag(sp, &uniqtag.hdr); /* AC cookie */
- tag = get_tag(ph, PTT_SRV_NAME);
- if (tag) {
+ if ((tag = get_tag(ph, PTT_SRV_NAME)))
insert_tag(sp, tag); /* return service */
- }
+ if ((tag = get_tag(ph, PTT_HOST_UNIQ)))
+ insert_tag(sp, tag); /* returned hostunique */
+ insert_tag(sp, &uniqtag.hdr);
/* XXX maybe put the tag in the session store */
scan_tags(sp, ph);
make_packet(sp);
OpenPOWER on IntegriCloud