|
From: Anders J. <and...@us...> - 2003-06-05 12:13:07
|
The following file was modified in linux/drivers/char/bluetooth:
Name Old version New version Tag Comment
---- ----------- ----------- --- -------
bnep.c 1.16 1.16.2.1 change_branch--bnep_fix=20=20
The accompanying log:
Filters are reset after a disconnect.
The diff of the modified file(s):
--- bnep.c 2003/01/09 09:56:19 1.16
+++ bnep.c 2003/06/05 12:13:04 1.16.2.1
@@ -152,6 +152,8 @@ static void bnep_receive_packet(l2cap_co
static int bnep_control(l2cap_con *l2cap, u8 *data, u8 bnep_control_type);
=20
/* Misc functions */
+static void bnep_reset_multicast_filter(struct net_local *local);
+static void bnep_reset_protocol_filter(struct net_local *local);
s32 check_filter(unsigned char *filter1, unsigned char *filter2, u16 size);
=20
=20
@@ -1051,20 +1053,10 @@ bnep_control(l2cap_con *l2cap, u8 *data,
rsp.bnep_control_type =3D BNEP_FILTER_NET_TYPE_RESPONSE_MSG;
rsp.bnep_response_msg =3D cpu_to_be16(SUCCESS);
=20=09=09
-=09=20=20=20=20=20=20=20
- {
/* Reset filter */
- D_MISC("Reset filter\n");
- for (i=3D0;i<BNEP_MAX_PROTOCOL_FILTER_RANGES;i++) {
- local->filter_list[i*2] =3D 0;
- local->filter_list[i*2+1] =3D 0;
- }
-
- /* Accept all packet types */
- local->filter_list[0] =3D 0x0000;
- local->filter_list[1] =3D 0xffff;
+ bnep_reset_protocol_filter(local);
used_filters=3D0;
- }=20
+
if (n =3D=3D 0) {
}=20
else if (n > BNEP_MAX_PROTOCOL_FILTER_RANGES) {
@@ -1154,12 +1146,7 @@ bnep_control(l2cap_con *l2cap, u8 *data,
=20=09=09
/* If no filters are set, reset filter list */
D_MISC(__FUNCTION__" Reset all multicast filters and accep=
t all addresses\n");
- for (i=3D0;i<BNEP_MAX_MCAST_FILTER_RANGES;i++) {
- memset(&local->filter_multi_addr_list[i*2].addr[0],0,6);
- memset(&local->filter_multi_addr_list[i*2+1].addr[0],0,6);
- }
- /* Accept all multicast addresses */
- memset(&local->filter_multi_addr_list[1].addr[0],0xff,6);
+ bnep_reset_multicast_filter(local);
used_filters=3D0;
=20
if (n =3D=3D 0) {
@@ -1440,6 +1427,8 @@ bnep_disconnect_ind(l2cap_con *l2cap)=20
local =3D dev->priv;
local->l2cap =3D NULL;
local->state =3D DISCONNECTED;
+ bnep_reset_multicast_filter(local);
+ bnep_reset_protocol_filter(local);
}
}
=20
@@ -1454,6 +1443,8 @@ bnep_disconnect_cfm(l2cap_con *l2cap)=20
dev =3D (struct net_device *)l2cap->upper_con;
local =3D dev->priv;
local->state =3D DISCONNECTED;
+ bnep_reset_multicast_filter(local);
+ bnep_reset_protocol_filter(local);
=20=09
DSYS(__FUNCTION__": disconnected\n");
local->l2cap =3D NULL;
@@ -1534,6 +1525,32 @@ bnep_disconnect_req(u8 *bd_addr)
}
DSYS("BNEP: bnep_disconnect_req bd_addr no found !!!\n");
return -1;
+}
+
+static void=20
+bnep_reset_multicast_filter(struct net_local *local)
+{
+ int i;
+ for (i =3D 0 ; i < BNEP_MAX_MCAST_FILTER_RANGES ; i++) {
+ memset(&local->filter_multi_addr_list[i*2].addr[0],0,6);
+ memset(&local->filter_multi_addr_list[i*2+1].addr[0],0,6);
+ }
+ /* Accept all multicast addresses */
+ memset(&local->filter_multi_addr_list[1].addr[0],0xff,6);
+}
+
+static void=20
+bnep_reset_protocol_filter(struct net_local *local)
+{
+ int i;
+ for (i=3D0;i<BNEP_MAX_PROTOCOL_FILTER_RANGES;i++) {
+ local->filter_list[i*2] =3D 0;
+ local->filter_list[i*2+1] =3D 0;
+ }
+=09
+ /* Accept all packet types */
+ local->filter_list[0] =3D 0x0000;
+ local->filter_list[1] =3D 0xffff;
}
=20
s32
|