diff options
Diffstat (limited to 'net/tipc/port.c')
-rw-r--r-- | net/tipc/port.c | 115 |
1 files changed, 16 insertions, 99 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c index 82092eaa153..7873283f496 100644 --- a/net/tipc/port.c +++ b/net/tipc/port.c | |||
@@ -36,15 +36,9 @@ | |||
36 | 36 | ||
37 | #include "core.h" | 37 | #include "core.h" |
38 | #include "config.h" | 38 | #include "config.h" |
39 | #include "dbg.h" | ||
40 | #include "port.h" | 39 | #include "port.h" |
41 | #include "addr.h" | ||
42 | #include "link.h" | ||
43 | #include "node.h" | ||
44 | #include "name_table.h" | 40 | #include "name_table.h" |
45 | #include "user_reg.h" | 41 | #include "user_reg.h" |
46 | #include "msg.h" | ||
47 | #include "bcast.h" | ||
48 | 42 | ||
49 | /* Connection management: */ | 43 | /* Connection management: */ |
50 | #define PROBING_INTERVAL 3600000 /* [ms] => 1 h */ | 44 | #define PROBING_INTERVAL 3600000 /* [ms] => 1 h */ |
@@ -94,7 +88,7 @@ static void port_incr_out_seqno(struct port *p_ptr) | |||
94 | * tipc_multicast - send a multicast message to local and remote destinations | 88 | * tipc_multicast - send a multicast message to local and remote destinations |
95 | */ | 89 | */ |
96 | 90 | ||
97 | int tipc_multicast(u32 ref, struct tipc_name_seq const *seq, u32 domain, | 91 | int tipc_multicast(u32 ref, struct tipc_name_seq const *seq, |
98 | u32 num_sect, struct iovec const *msg_sect) | 92 | u32 num_sect, struct iovec const *msg_sect) |
99 | { | 93 | { |
100 | struct tipc_msg *hdr; | 94 | struct tipc_msg *hdr; |
@@ -989,13 +983,6 @@ int tipc_createport(u32 user_ref, | |||
989 | return 0; | 983 | return 0; |
990 | } | 984 | } |
991 | 985 | ||
992 | int tipc_ownidentity(u32 ref, struct tipc_portid *id) | ||
993 | { | ||
994 | id->ref = ref; | ||
995 | id->node = tipc_own_addr; | ||
996 | return 0; | ||
997 | } | ||
998 | |||
999 | int tipc_portimportance(u32 ref, unsigned int *importance) | 986 | int tipc_portimportance(u32 ref, unsigned int *importance) |
1000 | { | 987 | { |
1001 | struct port *p_ptr; | 988 | struct port *p_ptr; |
@@ -1271,16 +1258,11 @@ int tipc_send(u32 ref, unsigned int num_sect, struct iovec const *msg_sect) | |||
1271 | } | 1258 | } |
1272 | 1259 | ||
1273 | /** | 1260 | /** |
1274 | * tipc_forward2name - forward message sections to port name | 1261 | * tipc_send2name - send message sections to port name |
1275 | */ | 1262 | */ |
1276 | 1263 | ||
1277 | static int tipc_forward2name(u32 ref, | 1264 | int tipc_send2name(u32 ref, struct tipc_name const *name, unsigned int domain, |
1278 | struct tipc_name const *name, | 1265 | unsigned int num_sect, struct iovec const *msg_sect) |
1279 | u32 domain, | ||
1280 | u32 num_sect, | ||
1281 | struct iovec const *msg_sect, | ||
1282 | struct tipc_portid const *orig, | ||
1283 | unsigned int importance) | ||
1284 | { | 1266 | { |
1285 | struct port *p_ptr; | 1267 | struct port *p_ptr; |
1286 | struct tipc_msg *msg; | 1268 | struct tipc_msg *msg; |
@@ -1294,14 +1276,12 @@ static int tipc_forward2name(u32 ref, | |||
1294 | 1276 | ||
1295 | msg = &p_ptr->publ.phdr; | 1277 | msg = &p_ptr->publ.phdr; |
1296 | msg_set_type(msg, TIPC_NAMED_MSG); | 1278 | msg_set_type(msg, TIPC_NAMED_MSG); |
1297 | msg_set_orignode(msg, orig->node); | 1279 | msg_set_orignode(msg, tipc_own_addr); |
1298 | msg_set_origport(msg, orig->ref); | 1280 | msg_set_origport(msg, ref); |
1299 | msg_set_hdr_sz(msg, LONG_H_SIZE); | 1281 | msg_set_hdr_sz(msg, LONG_H_SIZE); |
1300 | msg_set_nametype(msg, name->type); | 1282 | msg_set_nametype(msg, name->type); |
1301 | msg_set_nameinst(msg, name->instance); | 1283 | msg_set_nameinst(msg, name->instance); |
1302 | msg_set_lookup_scope(msg, tipc_addr_scope(domain)); | 1284 | msg_set_lookup_scope(msg, tipc_addr_scope(domain)); |
1303 | if (importance <= TIPC_CRITICAL_IMPORTANCE) | ||
1304 | msg_set_importance(msg,importance); | ||
1305 | destport = tipc_nametbl_translate(name->type, name->instance, &destnode); | 1285 | destport = tipc_nametbl_translate(name->type, name->instance, &destnode); |
1306 | msg_set_destnode(msg, destnode); | 1286 | msg_set_destnode(msg, destnode); |
1307 | msg_set_destport(msg, destport); | 1287 | msg_set_destport(msg, destport); |
@@ -1325,33 +1305,11 @@ static int tipc_forward2name(u32 ref, | |||
1325 | } | 1305 | } |
1326 | 1306 | ||
1327 | /** | 1307 | /** |
1328 | * tipc_send2name - send message sections to port name | 1308 | * tipc_send2port - send message sections to port identity |
1329 | */ | ||
1330 | |||
1331 | int tipc_send2name(u32 ref, | ||
1332 | struct tipc_name const *name, | ||
1333 | unsigned int domain, | ||
1334 | unsigned int num_sect, | ||
1335 | struct iovec const *msg_sect) | ||
1336 | { | ||
1337 | struct tipc_portid orig; | ||
1338 | |||
1339 | orig.ref = ref; | ||
1340 | orig.node = tipc_own_addr; | ||
1341 | return tipc_forward2name(ref, name, domain, num_sect, msg_sect, &orig, | ||
1342 | TIPC_PORT_IMPORTANCE); | ||
1343 | } | ||
1344 | |||
1345 | /** | ||
1346 | * tipc_forward2port - forward message sections to port identity | ||
1347 | */ | 1309 | */ |
1348 | 1310 | ||
1349 | static int tipc_forward2port(u32 ref, | 1311 | int tipc_send2port(u32 ref, struct tipc_portid const *dest, |
1350 | struct tipc_portid const *dest, | 1312 | unsigned int num_sect, struct iovec const *msg_sect) |
1351 | unsigned int num_sect, | ||
1352 | struct iovec const *msg_sect, | ||
1353 | struct tipc_portid const *orig, | ||
1354 | unsigned int importance) | ||
1355 | { | 1313 | { |
1356 | struct port *p_ptr; | 1314 | struct port *p_ptr; |
1357 | struct tipc_msg *msg; | 1315 | struct tipc_msg *msg; |
@@ -1363,13 +1321,11 @@ static int tipc_forward2port(u32 ref, | |||
1363 | 1321 | ||
1364 | msg = &p_ptr->publ.phdr; | 1322 | msg = &p_ptr->publ.phdr; |
1365 | msg_set_type(msg, TIPC_DIRECT_MSG); | 1323 | msg_set_type(msg, TIPC_DIRECT_MSG); |
1366 | msg_set_orignode(msg, orig->node); | 1324 | msg_set_orignode(msg, tipc_own_addr); |
1367 | msg_set_origport(msg, orig->ref); | 1325 | msg_set_origport(msg, ref); |
1368 | msg_set_destnode(msg, dest->node); | 1326 | msg_set_destnode(msg, dest->node); |
1369 | msg_set_destport(msg, dest->ref); | 1327 | msg_set_destport(msg, dest->ref); |
1370 | msg_set_hdr_sz(msg, DIR_MSG_H_SIZE); | 1328 | msg_set_hdr_sz(msg, DIR_MSG_H_SIZE); |
1371 | if (importance <= TIPC_CRITICAL_IMPORTANCE) | ||
1372 | msg_set_importance(msg, importance); | ||
1373 | p_ptr->sent++; | 1329 | p_ptr->sent++; |
1374 | if (dest->node == tipc_own_addr) | 1330 | if (dest->node == tipc_own_addr) |
1375 | return tipc_port_recv_sections(p_ptr, num_sect, msg_sect); | 1331 | return tipc_port_recv_sections(p_ptr, num_sect, msg_sect); |
@@ -1384,31 +1340,11 @@ static int tipc_forward2port(u32 ref, | |||
1384 | } | 1340 | } |
1385 | 1341 | ||
1386 | /** | 1342 | /** |
1387 | * tipc_send2port - send message sections to port identity | 1343 | * tipc_send_buf2port - send message buffer to port identity |
1388 | */ | 1344 | */ |
1389 | 1345 | ||
1390 | int tipc_send2port(u32 ref, | 1346 | int tipc_send_buf2port(u32 ref, struct tipc_portid const *dest, |
1391 | struct tipc_portid const *dest, | 1347 | struct sk_buff *buf, unsigned int dsz) |
1392 | unsigned int num_sect, | ||
1393 | struct iovec const *msg_sect) | ||
1394 | { | ||
1395 | struct tipc_portid orig; | ||
1396 | |||
1397 | orig.ref = ref; | ||
1398 | orig.node = tipc_own_addr; | ||
1399 | return tipc_forward2port(ref, dest, num_sect, msg_sect, &orig, | ||
1400 | TIPC_PORT_IMPORTANCE); | ||
1401 | } | ||
1402 | |||
1403 | /** | ||
1404 | * tipc_forward_buf2port - forward message buffer to port identity | ||
1405 | */ | ||
1406 | static int tipc_forward_buf2port(u32 ref, | ||
1407 | struct tipc_portid const *dest, | ||
1408 | struct sk_buff *buf, | ||
1409 | unsigned int dsz, | ||
1410 | struct tipc_portid const *orig, | ||
1411 | unsigned int importance) | ||
1412 | { | 1348 | { |
1413 | struct port *p_ptr; | 1349 | struct port *p_ptr; |
1414 | struct tipc_msg *msg; | 1350 | struct tipc_msg *msg; |
@@ -1420,13 +1356,11 @@ static int tipc_forward_buf2port(u32 ref, | |||
1420 | 1356 | ||
1421 | msg = &p_ptr->publ.phdr; | 1357 | msg = &p_ptr->publ.phdr; |
1422 | msg_set_type(msg, TIPC_DIRECT_MSG); | 1358 | msg_set_type(msg, TIPC_DIRECT_MSG); |
1423 | msg_set_orignode(msg, orig->node); | 1359 | msg_set_orignode(msg, tipc_own_addr); |
1424 | msg_set_origport(msg, orig->ref); | 1360 | msg_set_origport(msg, ref); |
1425 | msg_set_destnode(msg, dest->node); | 1361 | msg_set_destnode(msg, dest->node); |
1426 | msg_set_destport(msg, dest->ref); | 1362 | msg_set_destport(msg, dest->ref); |
1427 | msg_set_hdr_sz(msg, DIR_MSG_H_SIZE); | 1363 | msg_set_hdr_sz(msg, DIR_MSG_H_SIZE); |
1428 | if (importance <= TIPC_CRITICAL_IMPORTANCE) | ||
1429 | msg_set_importance(msg, importance); | ||
1430 | msg_set_size(msg, DIR_MSG_H_SIZE + dsz); | 1364 | msg_set_size(msg, DIR_MSG_H_SIZE + dsz); |
1431 | if (skb_cow(buf, DIR_MSG_H_SIZE)) | 1365 | if (skb_cow(buf, DIR_MSG_H_SIZE)) |
1432 | return -ENOMEM; | 1366 | return -ENOMEM; |
@@ -1445,20 +1379,3 @@ static int tipc_forward_buf2port(u32 ref, | |||
1445 | return -ELINKCONG; | 1379 | return -ELINKCONG; |
1446 | } | 1380 | } |
1447 | 1381 | ||
1448 | /** | ||
1449 | * tipc_send_buf2port - send message buffer to port identity | ||
1450 | */ | ||
1451 | |||
1452 | int tipc_send_buf2port(u32 ref, | ||
1453 | struct tipc_portid const *dest, | ||
1454 | struct sk_buff *buf, | ||
1455 | unsigned int dsz) | ||
1456 | { | ||
1457 | struct tipc_portid orig; | ||
1458 | |||
1459 | orig.ref = ref; | ||
1460 | orig.node = tipc_own_addr; | ||
1461 | return tipc_forward_buf2port(ref, dest, buf, dsz, &orig, | ||
1462 | TIPC_PORT_IMPORTANCE); | ||
1463 | } | ||
1464 | |||