Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
f7061541
Commit
f7061541
authored
Oct 07, 2002
by
Vojtech Pavlik
Browse files
Options
Browse Files
Download
Plain Diff
Merge suse.cz:/home/vojtech/bk/linus into suse.cz:/home/vojtech/bk/input
parents
55ce9936
8a257dca
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
83 additions
and
75 deletions
+83
-75
drivers/bluetooth/Makefile
drivers/bluetooth/Makefile
+1
-1
net/bluetooth/Config.help
net/bluetooth/Config.help
+1
-27
net/bluetooth/Config.in
net/bluetooth/Config.in
+3
-1
net/bluetooth/Makefile
net/bluetooth/Makefile
+8
-18
net/bluetooth/bnep/Config.help
net/bluetooth/bnep/Config.help
+21
-0
net/bluetooth/bnep/Config.in
net/bluetooth/bnep/Config.in
+4
-2
net/bluetooth/bnep/Makefile
net/bluetooth/bnep/Makefile
+3
-4
net/bluetooth/bnep/core.c
net/bluetooth/bnep/core.c
+5
-5
net/bluetooth/bnep/netdev.c
net/bluetooth/bnep/netdev.c
+6
-6
net/bluetooth/bnep/sock.c
net/bluetooth/bnep/sock.c
+1
-1
net/bluetooth/rfcomm/Config.help
net/bluetooth/rfcomm/Config.help
+12
-0
net/bluetooth/rfcomm/Config.in
net/bluetooth/rfcomm/Config.in
+3
-1
net/bluetooth/rfcomm/Makefile
net/bluetooth/rfcomm/Makefile
+5
-5
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/core.c
+7
-1
net/bluetooth/rfcomm/sock.c
net/bluetooth/rfcomm/sock.c
+2
-2
net/bluetooth/rfcomm/tty.c
net/bluetooth/rfcomm/tty.c
+1
-1
No files found.
drivers/bluetooth/Makefile
View file @
f7061541
#
#
# Makefile for Bluetooth HCI device drivers.
# Makefile for
the Linux
Bluetooth HCI device drivers.
#
#
obj-$(CONFIG_BLUEZ_HCIUSB)
+=
hci_usb.o
obj-$(CONFIG_BLUEZ_HCIUSB)
+=
hci_usb.o
...
...
net/bluetooth/Config.help
View file @
f7061541
...
@@ -10,8 +10,8 @@ CONFIG_BLUEZ
...
@@ -10,8 +10,8 @@ CONFIG_BLUEZ
BlueZ Core (HCI device and connection manager, scheduler)
BlueZ Core (HCI device and connection manager, scheduler)
HCI Device drivers (interface to the hardware)
HCI Device drivers (interface to the hardware)
L2CAP Module (L2CAP protocol)
L2CAP Module (L2CAP protocol)
RFCOMM Module (RFCOMM protocol)
SCO Module (SCO links)
SCO Module (SCO links)
RFCOMM Module (RFCOMM protocol)
BNEP Module (BNEP protocol)
BNEP Module (BNEP protocol)
Say Y here to enable Linux Bluetooth support and to build BlueZ Core
Say Y here to enable Linux Bluetooth support and to build BlueZ Core
...
@@ -33,19 +33,6 @@ CONFIG_BLUEZ_L2CAP
...
@@ -33,19 +33,6 @@ CONFIG_BLUEZ_L2CAP
Say Y here to compile L2CAP support into the kernel or say M to
Say Y here to compile L2CAP support into the kernel or say M to
compile it as module (l2cap.o).
compile it as module (l2cap.o).
RFCOMM protocol support
CONFIG_BLUEZ_RFCOMM
RFCOMM provides connection oriented stream transport. RFCOMM
support is required for Dialup Networking, OBEX and other Bluetooth
applications.
Say Y here to compile RFCOMM support into the kernel or say M to
compile it as module (rfcomm.o).
RFCOMM TTY emulation support
CONFIG_RFCOMM_TTY
This options enables TTY emulation support for RFCOMM channels.
SCO links support
SCO links support
CONFIG_BLUEZ_SCO
CONFIG_BLUEZ_SCO
SCO link provides voice transport over Bluetooth. SCO support is
SCO link provides voice transport over Bluetooth. SCO support is
...
@@ -54,16 +41,3 @@ CONFIG_BLUEZ_SCO
...
@@ -54,16 +41,3 @@ CONFIG_BLUEZ_SCO
Say Y here to compile SCO support into the kernel or say M to
Say Y here to compile SCO support into the kernel or say M to
compile it as module (sco.o).
compile it as module (sco.o).
BNEP protocol support
CONFIG_BLUEZ_BNEP
BNEP (Bluetooth Network Encapsulation Protocol) is Ethernet
emulation layer on top of Bluetooth. BNEP is required for Bluetooth
PAN (Personal Area Network).
To use BNEP, you will need user-space utilities provided in the
BlueZ-PAN package.
For more information, see <http://bluez.sourceforge.net>.
Say Y here to compile BNEP support into the kernel or say M to
compile it as module (bnep.o).
net/bluetooth/Config.in
View file @
f7061541
#
#
# Bluetooth configuration
# Bluetooth
subsystem
configuration
#
#
if [ "$CONFIG_NET" != "n" ]; then
if [ "$CONFIG_NET" != "n" ]; then
mainmenu_option next_comment
mainmenu_option next_comment
comment 'Bluetooth support'
comment 'Bluetooth support'
dep_tristate 'Bluetooth subsystem support' CONFIG_BLUEZ $CONFIG_NET
dep_tristate 'Bluetooth subsystem support' CONFIG_BLUEZ $CONFIG_NET
...
@@ -14,6 +15,7 @@ if [ "$CONFIG_NET" != "n" ]; then
...
@@ -14,6 +15,7 @@ if [ "$CONFIG_NET" != "n" ]; then
source net/bluetooth/bnep/Config.in
source net/bluetooth/bnep/Config.in
source drivers/bluetooth/Config.in
source drivers/bluetooth/Config.in
fi
fi
endmenu
endmenu
fi
fi
net/bluetooth/Makefile
View file @
f7061541
#
#
# Makefile for the
Bluetooth subsystem
# Makefile for the
Linux Bluetooth subsystem.
#
#
export-objs
:=
syms.o
export-objs
:=
syms.o
...
@@ -7,18 +7,8 @@ export-objs := syms.o
...
@@ -7,18 +7,8 @@ export-objs := syms.o
obj-$(CONFIG_BLUEZ)
+=
bluez.o
obj-$(CONFIG_BLUEZ)
+=
bluez.o
obj-$(CONFIG_BLUEZ_L2CAP)
+=
l2cap.o
obj-$(CONFIG_BLUEZ_L2CAP)
+=
l2cap.o
obj-$(CONFIG_BLUEZ_SCO)
+=
sco.o
obj-$(CONFIG_BLUEZ_SCO)
+=
sco.o
obj-$(CONFIG_BLUEZ_RFCOMM)
+=
rfcomm/
subdir-$(CONFIG_BLUEZ_BNEP)
+=
bnep
obj-$(CONFIG_BLUEZ_BNEP)
+=
bnep/
ifeq
($(CONFIG_BLUEZ_BNEP),y)
obj-y
+=
bnep/bnep.o
endif
subdir-$(CONFIG_BLUEZ_RFCOMM)
+=
rfcomm
ifeq
($(CONFIG_BLUEZ_RFCOMM),y)
obj-y
+=
rfcomm/rfcomm.o
endif
bluez-objs
:=
af_bluetooth.o hci_core.o hci_conn.o hci_event.o hci_sock.o lib.o syms.o
bluez-objs
:=
af_bluetooth.o hci_core.o hci_conn.o hci_event.o hci_sock.o lib.o syms.o
...
...
net/bluetooth/bnep/Config.help
0 → 100644
View file @
f7061541
BNEP protocol support
CONFIG_BLUEZ_BNEP
BNEP (Bluetooth Network Encapsulation Protocol) is Ethernet
emulation layer on top of Bluetooth. BNEP is required for Bluetooth
PAN (Personal Area Network).
To use BNEP, you will need user-space utilities provided in the
BlueZ-PAN package.
For more information, see <http://bluez.sourceforge.net>.
Say Y here to compile BNEP support into the kernel or say M to
compile it as module (bnep.o).
BNEP multicast filter support
CONFIG_BLUEZ_BNEP_MC_FILTER
This option enables the multicast filter support for BNEP.
BNEP protocol filter support
CONFIG_BLUEZ_BNEP_PROTO_FILTER
This option enables the protocol filter support for BNEP.
net/bluetooth/bnep/Config.in
View file @
f7061541
dep_tristate 'BNEP protocol support' CONFIG_BLUEZ_BNEP $CONFIG_BLUEZ_L2CAP
dep_tristate 'BNEP protocol support' CONFIG_BLUEZ_BNEP $CONFIG_BLUEZ_L2CAP
if [ "$CONFIG_BLUEZ_BNEP" != "n" ]; then
if [ "$CONFIG_BLUEZ_BNEP" != "n" ]; then
bool ' Multicast filter support' CONFIG_BNEP_MC_FILTER
bool ' Multicast filter support' CONFIG_B
LUEZ_B
NEP_MC_FILTER
bool ' Protocol filter support' CONFIG_BNEP_PROTO_FILTER
bool ' Protocol filter support' CONFIG_B
LUEZ_B
NEP_PROTO_FILTER
fi
fi
net/bluetooth/bnep/Makefile
View file @
f7061541
#
#
# Makefile for
BNEP protocol
# Makefile for
the Linux Bluetooth BNEP layer.
#
#
O_TARGET
:
=
bnep.o
obj-$(CONFIG_BLUEZ_BNEP)
+
=
bnep.o
obj-y
:=
core.o sock.o netdev.o crc32.o
bnep-objs
:=
core.o sock.o netdev.o crc32.o
obj-m
+=
$(O_TARGET)
include
$(TOPDIR)/Rules.make
include
$(TOPDIR)/Rules.make
net/bluetooth/bnep/core.c
View file @
f7061541
...
@@ -58,7 +58,7 @@
...
@@ -58,7 +58,7 @@
#include "bnep.h"
#include "bnep.h"
#ifndef CONFIG_BNEP_DEBUG
#ifndef CONFIG_B
LUEZ_B
NEP_DEBUG
#undef BT_DBG
#undef BT_DBG
#define BT_DBG(D...)
#define BT_DBG(D...)
#endif
#endif
...
@@ -129,7 +129,7 @@ static int bnep_ctrl_set_netfilter(struct bnep_session *s, struct sk_buff *skb)
...
@@ -129,7 +129,7 @@ static int bnep_ctrl_set_netfilter(struct bnep_session *s, struct sk_buff *skb)
BT_DBG
(
"filter len %d"
,
n
);
BT_DBG
(
"filter len %d"
,
n
);
#ifdef CONFIG_BNEP_PROTO_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_PROTO_FILTER
n
/=
4
;
n
/=
4
;
if
(
n
<=
BNEP_MAX_PROTO_FILTERS
)
{
if
(
n
<=
BNEP_MAX_PROTO_FILTERS
)
{
struct
bnep_proto_filter
*
f
=
s
->
proto_filter
;
struct
bnep_proto_filter
*
f
=
s
->
proto_filter
;
...
@@ -171,7 +171,7 @@ static int bnep_ctrl_set_mcfilter(struct bnep_session *s, struct sk_buff *skb)
...
@@ -171,7 +171,7 @@ static int bnep_ctrl_set_mcfilter(struct bnep_session *s, struct sk_buff *skb)
BT_DBG
(
"filter len %d"
,
n
);
BT_DBG
(
"filter len %d"
,
n
);
#ifdef CONFIG_BNEP_MC_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_MC_FILTER
n
/=
(
ETH_ALEN
*
2
);
n
/=
(
ETH_ALEN
*
2
);
if
(
n
>
0
)
{
if
(
n
>
0
)
{
...
@@ -545,12 +545,12 @@ int bnep_add_connection(struct bnep_conadd_req *req, struct socket *sock)
...
@@ -545,12 +545,12 @@ int bnep_add_connection(struct bnep_conadd_req *req, struct socket *sock)
s
->
msg
.
msg_flags
=
MSG_NOSIGNAL
;
s
->
msg
.
msg_flags
=
MSG_NOSIGNAL
;
#ifdef CONFIG_BNEP_MC_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_MC_FILTER
/* Set default mc filter */
/* Set default mc filter */
set_bit
(
bnep_mc_hash
(
dev
->
broadcast
),
(
ulong
*
)
&
s
->
mc_filter
);
set_bit
(
bnep_mc_hash
(
dev
->
broadcast
),
(
ulong
*
)
&
s
->
mc_filter
);
#endif
#endif
#ifdef CONFIG_BNEP_PROTO_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_PROTO_FILTER
/* Set default protocol filter */
/* Set default protocol filter */
/* (IPv4, ARP) */
/* (IPv4, ARP) */
...
...
net/bluetooth/bnep/netdev.c
View file @
f7061541
...
@@ -46,7 +46,7 @@
...
@@ -46,7 +46,7 @@
#include "bnep.h"
#include "bnep.h"
#ifndef CONFIG_BNEP_DEBUG
#ifndef CONFIG_B
LUEZ_B
NEP_DEBUG
#undef BT_DBG
#undef BT_DBG
#define BT_DBG( A... )
#define BT_DBG( A... )
#endif
#endif
...
@@ -73,7 +73,7 @@ static struct net_device_stats *bnep_net_get_stats(struct net_device *dev)
...
@@ -73,7 +73,7 @@ static struct net_device_stats *bnep_net_get_stats(struct net_device *dev)
static
void
bnep_net_set_mc_list
(
struct
net_device
*
dev
)
static
void
bnep_net_set_mc_list
(
struct
net_device
*
dev
)
{
{
#ifdef CONFIG_BNEP_MC_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_MC_FILTER
struct
bnep_session
*
s
=
dev
->
priv
;
struct
bnep_session
*
s
=
dev
->
priv
;
struct
sock
*
sk
=
s
->
sock
->
sk
;
struct
sock
*
sk
=
s
->
sock
->
sk
;
struct
bnep_set_filter_req
*
r
;
struct
bnep_set_filter_req
*
r
;
...
@@ -143,7 +143,7 @@ static int bnep_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
...
@@ -143,7 +143,7 @@ static int bnep_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
return
-
EINVAL
;
return
-
EINVAL
;
}
}
#ifdef CONFIG_BNEP_MC_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_MC_FILTER
static
inline
int
bnep_net_mc_filter
(
struct
sk_buff
*
skb
,
struct
bnep_session
*
s
)
static
inline
int
bnep_net_mc_filter
(
struct
sk_buff
*
skb
,
struct
bnep_session
*
s
)
{
{
struct
ethhdr
*
eh
=
(
void
*
)
skb
->
data
;
struct
ethhdr
*
eh
=
(
void
*
)
skb
->
data
;
...
@@ -154,7 +154,7 @@ static inline int bnep_net_mc_filter(struct sk_buff *skb, struct bnep_session *s
...
@@ -154,7 +154,7 @@ static inline int bnep_net_mc_filter(struct sk_buff *skb, struct bnep_session *s
}
}
#endif
#endif
#ifdef CONFIG_BNEP_PROTO_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_PROTO_FILTER
/* Determine ether protocol. Based on eth_type_trans. */
/* Determine ether protocol. Based on eth_type_trans. */
static
inline
u16
bnep_net_eth_proto
(
struct
sk_buff
*
skb
)
static
inline
u16
bnep_net_eth_proto
(
struct
sk_buff
*
skb
)
{
{
...
@@ -192,14 +192,14 @@ static int bnep_net_xmit(struct sk_buff *skb, struct net_device *dev)
...
@@ -192,14 +192,14 @@ static int bnep_net_xmit(struct sk_buff *skb, struct net_device *dev)
BT_DBG
(
"skb %p, dev %p"
,
skb
,
dev
);
BT_DBG
(
"skb %p, dev %p"
,
skb
,
dev
);
#ifdef CONFIG_BNEP_MC_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_MC_FILTER
if
(
bnep_net_mc_filter
(
skb
,
s
))
{
if
(
bnep_net_mc_filter
(
skb
,
s
))
{
kfree_skb
(
skb
);
kfree_skb
(
skb
);
return
0
;
return
0
;
}
}
#endif
#endif
#ifdef CONFIG_BNEP_PROTO_FILTER
#ifdef CONFIG_B
LUEZ_B
NEP_PROTO_FILTER
if
(
bnep_net_proto_filter
(
skb
,
s
))
{
if
(
bnep_net_proto_filter
(
skb
,
s
))
{
kfree_skb
(
skb
);
kfree_skb
(
skb
);
return
0
;
return
0
;
...
...
net/bluetooth/bnep/sock.c
View file @
f7061541
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
#include "bnep.h"
#include "bnep.h"
#ifndef CONFIG_BNEP_DEBUG
#ifndef CONFIG_B
LUEZ_B
NEP_DEBUG
#undef BT_DBG
#undef BT_DBG
#define BT_DBG( A... )
#define BT_DBG( A... )
#endif
#endif
...
...
net/bluetooth/rfcomm/Config.help
0 → 100644
View file @
f7061541
RFCOMM protocol support
CONFIG_BLUEZ_RFCOMM
RFCOMM provides connection oriented stream transport. RFCOMM
support is required for Dialup Networking, OBEX and other Bluetooth
applications.
Say Y here to compile RFCOMM support into the kernel or say M to
compile it as module (rfcomm.o).
RFCOMM TTY emulation support
CONFIG_BLUEZ_RFCOMM_TTY
This option enables TTY emulation support for RFCOMM channels.
net/bluetooth/rfcomm/Config.in
View file @
f7061541
dep_tristate 'RFCOMM protocol support' CONFIG_BLUEZ_RFCOMM $CONFIG_BLUEZ_L2CAP
dep_tristate 'RFCOMM protocol support' CONFIG_BLUEZ_RFCOMM $CONFIG_BLUEZ_L2CAP
if [ "$CONFIG_BLUEZ_RFCOMM" != "n" ]; then
if [ "$CONFIG_BLUEZ_RFCOMM" != "n" ]; then
bool ' RFCOMM TTY support' CONFIG_RFCOMM_TTY
bool ' RFCOMM TTY support' CONFIG_
BLUEZ_
RFCOMM_TTY
fi
fi
net/bluetooth/rfcomm/Makefile
View file @
f7061541
#
#
# Makefile for
BNEP protocol
# Makefile for
the Linux Bluetooth RFCOMM layer.
#
#
O_TARGET
:
=
rfcomm.o
obj-$(CONFIG_BLUEZ_RFCOMM)
+
=
rfcomm.o
obj-y
:=
core.o sock.o crc.o
rfcomm-y
:=
core.o sock.o crc.o
obj-$(CONFIG_RFCOMM_TTY)
+=
tty.o
rfcomm-$(CONFIG_BLUEZ_RFCOMM_TTY)
+=
tty.o
obj-m
+=
$(O_TARGET
)
rfcomm-objs
:=
$
(
rfcomm-y
)
include
$(TOPDIR)/Rules.make
include
$(TOPDIR)/Rules.make
net/bluetooth/rfcomm/core.c
View file @
f7061541
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
#define VERSION "0.3"
#define VERSION "0.3"
#ifndef CONFIG_RFCOMM_DEBUG
#ifndef CONFIG_
BLUEZ_
RFCOMM_DEBUG
#undef BT_DBG
#undef BT_DBG
#define BT_DBG(D...)
#define BT_DBG(D...)
#endif
#endif
...
@@ -1679,7 +1679,10 @@ int __init rfcomm_init(void)
...
@@ -1679,7 +1679,10 @@ int __init rfcomm_init(void)
kernel_thread
(
rfcomm_run
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
);
kernel_thread
(
rfcomm_run
,
NULL
,
CLONE_FS
|
CLONE_FILES
|
CLONE_SIGHAND
);
rfcomm_init_sockets
();
rfcomm_init_sockets
();
#ifdef CONFIG_BLUEZ_RFCOMM_TTY
rfcomm_init_ttys
();
rfcomm_init_ttys
();
#endif
BT_INFO
(
"BlueZ RFCOMM ver %s"
,
VERSION
);
BT_INFO
(
"BlueZ RFCOMM ver %s"
,
VERSION
);
BT_INFO
(
"Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>"
);
BT_INFO
(
"Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>"
);
...
@@ -1698,7 +1701,10 @@ void rfcomm_cleanup(void)
...
@@ -1698,7 +1701,10 @@ void rfcomm_cleanup(void)
while
(
atomic_read
(
&
running
))
while
(
atomic_read
(
&
running
))
schedule
();
schedule
();
#ifdef CONFIG_BLUEZ_RFCOMM_TTY
rfcomm_cleanup_ttys
();
rfcomm_cleanup_ttys
();
#endif
rfcomm_cleanup_sockets
();
rfcomm_cleanup_sockets
();
return
;
return
;
}
}
...
...
net/bluetooth/rfcomm/sock.c
View file @
f7061541
...
@@ -53,7 +53,7 @@
...
@@ -53,7 +53,7 @@
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/rfcomm.h>
#include <net/bluetooth/rfcomm.h>
#ifndef CONFIG_RFCOMM_DEBUG
#ifndef CONFIG_
BLUEZ_
RFCOMM_DEBUG
#undef BT_DBG
#undef BT_DBG
#define BT_DBG(D...)
#define BT_DBG(D...)
#endif
#endif
...
@@ -704,7 +704,7 @@ static int rfcomm_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned lon
...
@@ -704,7 +704,7 @@ static int rfcomm_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned lon
lock_sock
(
sk
);
lock_sock
(
sk
);
#ifdef CONFIG_RFCOMM_TTY
#ifdef CONFIG_
BLUEZ_
RFCOMM_TTY
err
=
rfcomm_dev_ioctl
(
sk
,
cmd
,
arg
);
err
=
rfcomm_dev_ioctl
(
sk
,
cmd
,
arg
);
#else
#else
err
=
-
EOPNOTSUPP
;
err
=
-
EOPNOTSUPP
;
...
...
net/bluetooth/rfcomm/tty.c
View file @
f7061541
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/rfcomm.h>
#include <net/bluetooth/rfcomm.h>
#ifndef CONFIG_RFCOMM_DEBUG
#ifndef CONFIG_
BLUEZ_
RFCOMM_DEBUG
#undef BT_DBG
#undef BT_DBG
#define BT_DBG(D...)
#define BT_DBG(D...)
#endif
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment