msc: Add msc ip-tos NR option for the BSC
Allow to set the TOS field via the VTY interface. The SO_PRIORITY was not used as it has no effect on the packets being sent (in contrast to the documentation).
This commit is contained in:
parent
b71c23bb0a
commit
ca999a989d
|
@ -32,6 +32,7 @@ struct bsc_msc_connection {
|
|||
int is_authenticated;
|
||||
const char *ip;
|
||||
int port;
|
||||
int prio;
|
||||
|
||||
void (*connection_loss) (struct bsc_msc_connection *);
|
||||
void (*connected) (struct bsc_msc_connection *);
|
||||
|
@ -39,7 +40,7 @@ struct bsc_msc_connection {
|
|||
struct timer_list timeout_timer;
|
||||
};
|
||||
|
||||
struct bsc_msc_connection *bsc_msc_create(const char *ip, int port);
|
||||
struct bsc_msc_connection *bsc_msc_create(const char *ip, int port, int prio);
|
||||
int bsc_msc_connect(struct bsc_msc_connection *);
|
||||
void bsc_msc_schedule_connect(struct bsc_msc_connection *);
|
||||
|
||||
|
|
|
@ -677,6 +677,7 @@ struct gsm_network {
|
|||
struct {
|
||||
enum rrlp_mode mode;
|
||||
} rrlp;
|
||||
int msc_prio;
|
||||
};
|
||||
|
||||
#define SMS_HDR_SIZE 128
|
||||
|
|
|
@ -163,6 +163,13 @@ int bsc_msc_connect(struct bsc_msc_connection *con)
|
|||
/* make it non blocking */
|
||||
setnonblocking(fd);
|
||||
|
||||
/* set the socket priority */
|
||||
ret = setsockopt(fd->fd, IPPROTO_IP, IP_TOS,
|
||||
&con->prio, sizeof(con->prio));
|
||||
if (ret != 0)
|
||||
LOGP(DMSC, LOGL_ERROR, "Failed to set prio to %d. %s\n",
|
||||
con->prio, strerror(errno));
|
||||
|
||||
memset(&sin, 0, sizeof(sin));
|
||||
sin.sin_family = AF_INET;
|
||||
sin.sin_port = htons(con->port);
|
||||
|
@ -200,7 +207,7 @@ int bsc_msc_connect(struct bsc_msc_connection *con)
|
|||
return ret;
|
||||
}
|
||||
|
||||
struct bsc_msc_connection *bsc_msc_create(const char *ip, int port)
|
||||
struct bsc_msc_connection *bsc_msc_create(const char *ip, int port, int prio)
|
||||
{
|
||||
struct bsc_msc_connection *con;
|
||||
|
||||
|
@ -212,6 +219,7 @@ struct bsc_msc_connection *bsc_msc_create(const char *ip, int port)
|
|||
|
||||
con->ip = ip;
|
||||
con->port = port;
|
||||
con->prio = prio;
|
||||
write_queue_init(&con->write_queue, 100);
|
||||
con->write_queue.except_cb = bsc_msc_except;
|
||||
return con;
|
||||
|
|
|
@ -1110,7 +1110,7 @@ int main(int argc, char** argv)
|
|||
return -4;
|
||||
|
||||
/* connect to the MSC */
|
||||
nat->msc_con = bsc_msc_create(nat->msc_ip, nat->msc_port);
|
||||
nat->msc_con = bsc_msc_create(nat->msc_ip, nat->msc_port, 0);
|
||||
if (!nat->msc_con) {
|
||||
fprintf(stderr, "Creating a bsc_msc_connection failed.\n");
|
||||
exit(1);
|
||||
|
|
Loading…
Reference in New Issue