diff options
| author | Joe Perches <joe@perches.com> | 2011-07-01 05:43:13 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-07-01 19:11:16 -0400 |
| commit | fddc5f3e9164858cd9264a17580f9fc5ad948458 (patch) | |
| tree | 8ac3da6561b74851304164af6e295a80f61e7665 /net/x25 | |
| parent | 89f0e4feafb64643b0f0aba9d89984362bac9739 (diff) | |
x25: Reduce switch/case indent
Make the case labels the same indent as the switch.
git diff -w shows 80 column line reflowing.
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/x25')
| -rw-r--r-- | net/x25/af_x25.c | 471 | ||||
| -rw-r--r-- | net/x25/x25_dev.c | 44 | ||||
| -rw-r--r-- | net/x25/x25_in.c | 118 | ||||
| -rw-r--r-- | net/x25/x25_link.c | 87 | ||||
| -rw-r--r-- | net/x25/x25_subr.c | 78 |
5 files changed, 396 insertions, 402 deletions
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c index 4680b1e4c79c..d30615419b4d 100644 --- a/net/x25/af_x25.c +++ b/net/x25/af_x25.c | |||
| @@ -237,21 +237,21 @@ static int x25_device_event(struct notifier_block *this, unsigned long event, | |||
| 237 | #endif | 237 | #endif |
| 238 | ) { | 238 | ) { |
| 239 | switch (event) { | 239 | switch (event) { |
| 240 | case NETDEV_UP: | 240 | case NETDEV_UP: |
| 241 | x25_link_device_up(dev); | 241 | x25_link_device_up(dev); |
| 242 | break; | 242 | break; |
| 243 | case NETDEV_GOING_DOWN: | 243 | case NETDEV_GOING_DOWN: |
| 244 | nb = x25_get_neigh(dev); | 244 | nb = x25_get_neigh(dev); |
| 245 | if (nb) { | 245 | if (nb) { |
| 246 | x25_terminate_link(nb); | 246 | x25_terminate_link(nb); |
| 247 | x25_neigh_put(nb); | 247 | x25_neigh_put(nb); |
| 248 | } | 248 | } |
| 249 | break; | 249 | break; |
| 250 | case NETDEV_DOWN: | 250 | case NETDEV_DOWN: |
| 251 | x25_kill_by_device(dev); | 251 | x25_kill_by_device(dev); |
| 252 | x25_route_device_down(dev); | 252 | x25_route_device_down(dev); |
| 253 | x25_link_device_down(dev); | 253 | x25_link_device_down(dev); |
| 254 | break; | 254 | break; |
| 255 | } | 255 | } |
| 256 | } | 256 | } |
| 257 | 257 | ||
| @@ -1336,256 +1336,253 @@ static int x25_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) | |||
| 1336 | int rc; | 1336 | int rc; |
| 1337 | 1337 | ||
| 1338 | switch (cmd) { | 1338 | switch (cmd) { |
| 1339 | case TIOCOUTQ: { | 1339 | case TIOCOUTQ: { |
| 1340 | int amount; | 1340 | int amount; |
| 1341 | 1341 | ||
| 1342 | amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk); | 1342 | amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk); |
| 1343 | if (amount < 0) | 1343 | if (amount < 0) |
| 1344 | amount = 0; | 1344 | amount = 0; |
| 1345 | rc = put_user(amount, (unsigned int __user *)argp); | 1345 | rc = put_user(amount, (unsigned int __user *)argp); |
| 1346 | break; | 1346 | break; |
| 1347 | } | 1347 | } |
| 1348 | 1348 | ||
| 1349 | case TIOCINQ: { | 1349 | case TIOCINQ: { |
| 1350 | struct sk_buff *skb; | 1350 | struct sk_buff *skb; |
| 1351 | int amount = 0; | 1351 | int amount = 0; |
| 1352 | /* | 1352 | /* |
| 1353 | * These two are safe on a single CPU system as | 1353 | * These two are safe on a single CPU system as |
| 1354 | * only user tasks fiddle here | 1354 | * only user tasks fiddle here |
| 1355 | */ | 1355 | */ |
| 1356 | lock_sock(sk); | 1356 | lock_sock(sk); |
| 1357 | if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL) | 1357 | if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL) |
| 1358 | amount = skb->len; | 1358 | amount = skb->len; |
| 1359 | release_sock(sk); | 1359 | release_sock(sk); |
| 1360 | rc = put_user(amount, (unsigned int __user *)argp); | 1360 | rc = put_user(amount, (unsigned int __user *)argp); |
| 1361 | break; | 1361 | break; |
| 1362 | } | 1362 | } |
| 1363 | 1363 | ||
| 1364 | case SIOCGSTAMP: | 1364 | case SIOCGSTAMP: |
| 1365 | rc = -EINVAL; | 1365 | rc = -EINVAL; |
| 1366 | if (sk) | 1366 | if (sk) |
| 1367 | rc = sock_get_timestamp(sk, | 1367 | rc = sock_get_timestamp(sk, |
| 1368 | (struct timeval __user *)argp); | 1368 | (struct timeval __user *)argp); |
| 1369 | break; | ||
| 1370 | case SIOCGSTAMPNS: | ||
| 1371 | rc = -EINVAL; | ||
| 1372 | if (sk) | ||
| 1373 | rc = sock_get_timestampns(sk, | ||
| 1374 | (struct timespec __user *)argp); | ||
| 1375 | break; | ||
| 1376 | case SIOCGIFADDR: | ||
| 1377 | case SIOCSIFADDR: | ||
| 1378 | case SIOCGIFDSTADDR: | ||
| 1379 | case SIOCSIFDSTADDR: | ||
| 1380 | case SIOCGIFBRDADDR: | ||
| 1381 | case SIOCSIFBRDADDR: | ||
| 1382 | case SIOCGIFNETMASK: | ||
| 1383 | case SIOCSIFNETMASK: | ||
| 1384 | case SIOCGIFMETRIC: | ||
| 1385 | case SIOCSIFMETRIC: | ||
| 1386 | rc = -EINVAL; | ||
| 1387 | break; | ||
| 1388 | case SIOCADDRT: | ||
| 1389 | case SIOCDELRT: | ||
| 1390 | rc = -EPERM; | ||
| 1391 | if (!capable(CAP_NET_ADMIN)) | ||
| 1369 | break; | 1392 | break; |
| 1370 | case SIOCGSTAMPNS: | 1393 | rc = x25_route_ioctl(cmd, argp); |
| 1371 | rc = -EINVAL; | 1394 | break; |
| 1372 | if (sk) | 1395 | case SIOCX25GSUBSCRIP: |
| 1373 | rc = sock_get_timestampns(sk, | 1396 | rc = x25_subscr_ioctl(cmd, argp); |
| 1374 | (struct timespec __user *)argp); | 1397 | break; |
| 1375 | break; | 1398 | case SIOCX25SSUBSCRIP: |
| 1376 | case SIOCGIFADDR: | 1399 | rc = -EPERM; |
| 1377 | case SIOCSIFADDR: | 1400 | if (!capable(CAP_NET_ADMIN)) |
| 1378 | case SIOCGIFDSTADDR: | ||
| 1379 | case SIOCSIFDSTADDR: | ||
| 1380 | case SIOCGIFBRDADDR: | ||
| 1381 | case SIOCSIFBRDADDR: | ||
| 1382 | case SIOCGIFNETMASK: | ||
| 1383 | case SIOCSIFNETMASK: | ||
| 1384 | case SIOCGIFMETRIC: | ||
| 1385 | case SIOCSIFMETRIC: | ||
| 1386 | rc = -EINVAL; | ||
| 1387 | break; | ||
| 1388 | case SIOCADDRT: | ||
| 1389 | case SIOCDELRT: | ||
| 1390 | rc = -EPERM; | ||
| 1391 | if (!capable(CAP_NET_ADMIN)) | ||
| 1392 | break; | ||
| 1393 | rc = x25_route_ioctl(cmd, argp); | ||
| 1394 | break; | ||
| 1395 | case SIOCX25GSUBSCRIP: | ||
| 1396 | rc = x25_subscr_ioctl(cmd, argp); | ||
| 1397 | break; | ||
| 1398 | case SIOCX25SSUBSCRIP: | ||
| 1399 | rc = -EPERM; | ||
| 1400 | if (!capable(CAP_NET_ADMIN)) | ||
| 1401 | break; | ||
| 1402 | rc = x25_subscr_ioctl(cmd, argp); | ||
| 1403 | break; | ||
| 1404 | case SIOCX25GFACILITIES: { | ||
| 1405 | lock_sock(sk); | ||
| 1406 | rc = copy_to_user(argp, &x25->facilities, | ||
| 1407 | sizeof(x25->facilities)) | ||
| 1408 | ? -EFAULT : 0; | ||
| 1409 | release_sock(sk); | ||
| 1410 | break; | 1401 | break; |
| 1411 | } | 1402 | rc = x25_subscr_ioctl(cmd, argp); |
| 1403 | break; | ||
| 1404 | case SIOCX25GFACILITIES: { | ||
| 1405 | lock_sock(sk); | ||
| 1406 | rc = copy_to_user(argp, &x25->facilities, | ||
| 1407 | sizeof(x25->facilities)) | ||
| 1408 | ? -EFAULT : 0; | ||
| 1409 | release_sock(sk); | ||
| 1410 | break; | ||
| 1411 | } | ||
| 1412 | 1412 | ||
| 1413 | case SIOCX25SFACILITIES: { | 1413 | case SIOCX25SFACILITIES: { |
| 1414 | struct x25_facilities facilities; | 1414 | struct x25_facilities facilities; |
| 1415 | rc = -EFAULT; | 1415 | rc = -EFAULT; |
| 1416 | if (copy_from_user(&facilities, argp, | 1416 | if (copy_from_user(&facilities, argp, sizeof(facilities))) |
| 1417 | sizeof(facilities))) | 1417 | break; |
| 1418 | break; | 1418 | rc = -EINVAL; |
| 1419 | rc = -EINVAL; | 1419 | lock_sock(sk); |
| 1420 | lock_sock(sk); | 1420 | if (sk->sk_state != TCP_LISTEN && |
| 1421 | if (sk->sk_state != TCP_LISTEN && | 1421 | sk->sk_state != TCP_CLOSE) |
| 1422 | sk->sk_state != TCP_CLOSE) | 1422 | goto out_fac_release; |
| 1423 | goto out_fac_release; | 1423 | if (facilities.pacsize_in < X25_PS16 || |
| 1424 | if (facilities.pacsize_in < X25_PS16 || | 1424 | facilities.pacsize_in > X25_PS4096) |
| 1425 | facilities.pacsize_in > X25_PS4096) | 1425 | goto out_fac_release; |
| 1426 | goto out_fac_release; | 1426 | if (facilities.pacsize_out < X25_PS16 || |
| 1427 | if (facilities.pacsize_out < X25_PS16 || | 1427 | facilities.pacsize_out > X25_PS4096) |
| 1428 | facilities.pacsize_out > X25_PS4096) | 1428 | goto out_fac_release; |
| 1429 | goto out_fac_release; | 1429 | if (facilities.winsize_in < 1 || |
| 1430 | if (facilities.winsize_in < 1 || | 1430 | facilities.winsize_in > 127) |
| 1431 | facilities.winsize_in > 127) | 1431 | goto out_fac_release; |
| 1432 | if (facilities.throughput) { | ||
| 1433 | int out = facilities.throughput & 0xf0; | ||
| 1434 | int in = facilities.throughput & 0x0f; | ||
| 1435 | if (!out) | ||
| 1436 | facilities.throughput |= | ||
| 1437 | X25_DEFAULT_THROUGHPUT << 4; | ||
| 1438 | else if (out < 0x30 || out > 0xD0) | ||
| 1432 | goto out_fac_release; | 1439 | goto out_fac_release; |
| 1433 | if (facilities.throughput) { | 1440 | if (!in) |
| 1434 | int out = facilities.throughput & 0xf0; | 1441 | facilities.throughput |= |
| 1435 | int in = facilities.throughput & 0x0f; | 1442 | X25_DEFAULT_THROUGHPUT; |
| 1436 | if (!out) | 1443 | else if (in < 0x03 || in > 0x0D) |
| 1437 | facilities.throughput |= | ||
| 1438 | X25_DEFAULT_THROUGHPUT << 4; | ||
| 1439 | else if (out < 0x30 || out > 0xD0) | ||
| 1440 | goto out_fac_release; | ||
| 1441 | if (!in) | ||
| 1442 | facilities.throughput |= | ||
| 1443 | X25_DEFAULT_THROUGHPUT; | ||
| 1444 | else if (in < 0x03 || in > 0x0D) | ||
| 1445 | goto out_fac_release; | ||
| 1446 | } | ||
| 1447 | if (facilities.reverse && | ||
| 1448 | (facilities.reverse & 0x81) != 0x81) | ||
| 1449 | goto out_fac_release; | 1444 | goto out_fac_release; |
| 1450 | x25->facilities = facilities; | ||
| 1451 | rc = 0; | ||
| 1452 | out_fac_release: | ||
| 1453 | release_sock(sk); | ||
| 1454 | break; | ||
| 1455 | } | ||
| 1456 | |||
| 1457 | case SIOCX25GDTEFACILITIES: { | ||
| 1458 | lock_sock(sk); | ||
| 1459 | rc = copy_to_user(argp, &x25->dte_facilities, | ||
| 1460 | sizeof(x25->dte_facilities)); | ||
| 1461 | release_sock(sk); | ||
| 1462 | if (rc) | ||
| 1463 | rc = -EFAULT; | ||
| 1464 | break; | ||
| 1465 | } | 1445 | } |
| 1446 | if (facilities.reverse && | ||
| 1447 | (facilities.reverse & 0x81) != 0x81) | ||
| 1448 | goto out_fac_release; | ||
| 1449 | x25->facilities = facilities; | ||
| 1450 | rc = 0; | ||
| 1451 | out_fac_release: | ||
| 1452 | release_sock(sk); | ||
| 1453 | break; | ||
| 1454 | } | ||
| 1466 | 1455 | ||
| 1467 | case SIOCX25SDTEFACILITIES: { | 1456 | case SIOCX25GDTEFACILITIES: { |
| 1468 | struct x25_dte_facilities dtefacs; | 1457 | lock_sock(sk); |
| 1458 | rc = copy_to_user(argp, &x25->dte_facilities, | ||
| 1459 | sizeof(x25->dte_facilities)); | ||
| 1460 | release_sock(sk); | ||
| 1461 | if (rc) | ||
| 1469 | rc = -EFAULT; | 1462 | rc = -EFAULT; |
| 1470 | if (copy_from_user(&dtefacs, argp, sizeof(dtefacs))) | 1463 | break; |
| 1471 | break; | 1464 | } |
| 1472 | rc = -EINVAL; | ||
| 1473 | lock_sock(sk); | ||
| 1474 | if (sk->sk_state != TCP_LISTEN && | ||
| 1475 | sk->sk_state != TCP_CLOSE) | ||
| 1476 | goto out_dtefac_release; | ||
| 1477 | if (dtefacs.calling_len > X25_MAX_AE_LEN) | ||
| 1478 | goto out_dtefac_release; | ||
| 1479 | if (dtefacs.calling_ae == NULL) | ||
| 1480 | goto out_dtefac_release; | ||
| 1481 | if (dtefacs.called_len > X25_MAX_AE_LEN) | ||
| 1482 | goto out_dtefac_release; | ||
| 1483 | if (dtefacs.called_ae == NULL) | ||
| 1484 | goto out_dtefac_release; | ||
| 1485 | x25->dte_facilities = dtefacs; | ||
| 1486 | rc = 0; | ||
| 1487 | out_dtefac_release: | ||
| 1488 | release_sock(sk); | ||
| 1489 | break; | ||
| 1490 | } | ||
| 1491 | 1465 | ||
| 1492 | case SIOCX25GCALLUSERDATA: { | 1466 | case SIOCX25SDTEFACILITIES: { |
| 1493 | lock_sock(sk); | 1467 | struct x25_dte_facilities dtefacs; |
| 1494 | rc = copy_to_user(argp, &x25->calluserdata, | 1468 | rc = -EFAULT; |
| 1495 | sizeof(x25->calluserdata)) | 1469 | if (copy_from_user(&dtefacs, argp, sizeof(dtefacs))) |
| 1496 | ? -EFAULT : 0; | ||
| 1497 | release_sock(sk); | ||
| 1498 | break; | 1470 | break; |
| 1499 | } | 1471 | rc = -EINVAL; |
| 1472 | lock_sock(sk); | ||
| 1473 | if (sk->sk_state != TCP_LISTEN && | ||
| 1474 | sk->sk_state != TCP_CLOSE) | ||
| 1475 | goto out_dtefac_release; | ||
| 1476 | if (dtefacs.calling_len > X25_MAX_AE_LEN) | ||
| 1477 | goto out_dtefac_release; | ||
| 1478 | if (dtefacs.calling_ae == NULL) | ||
| 1479 | goto out_dtefac_release; | ||
| 1480 | if (dtefacs.called_len > X25_MAX_AE_LEN) | ||
| 1481 | goto out_dtefac_release; | ||
| 1482 | if (dtefacs.called_ae == NULL) | ||
| 1483 | goto out_dtefac_release; | ||
| 1484 | x25->dte_facilities = dtefacs; | ||
| 1485 | rc = 0; | ||
| 1486 | out_dtefac_release: | ||
| 1487 | release_sock(sk); | ||
| 1488 | break; | ||
| 1489 | } | ||
| 1500 | 1490 | ||
| 1501 | case SIOCX25SCALLUSERDATA: { | 1491 | case SIOCX25GCALLUSERDATA: { |
| 1502 | struct x25_calluserdata calluserdata; | 1492 | lock_sock(sk); |
| 1493 | rc = copy_to_user(argp, &x25->calluserdata, | ||
| 1494 | sizeof(x25->calluserdata)) | ||
| 1495 | ? -EFAULT : 0; | ||
| 1496 | release_sock(sk); | ||
| 1497 | break; | ||
| 1498 | } | ||
| 1503 | 1499 | ||
| 1504 | rc = -EFAULT; | 1500 | case SIOCX25SCALLUSERDATA: { |
| 1505 | if (copy_from_user(&calluserdata, argp, | 1501 | struct x25_calluserdata calluserdata; |
| 1506 | sizeof(calluserdata))) | ||
| 1507 | break; | ||
| 1508 | rc = -EINVAL; | ||
| 1509 | if (calluserdata.cudlength > X25_MAX_CUD_LEN) | ||
| 1510 | break; | ||
| 1511 | lock_sock(sk); | ||
| 1512 | x25->calluserdata = calluserdata; | ||
| 1513 | release_sock(sk); | ||
| 1514 | rc = 0; | ||
| 1515 | break; | ||
| 1516 | } | ||
| 1517 | 1502 | ||
| 1518 | case SIOCX25GCAUSEDIAG: { | 1503 | rc = -EFAULT; |
| 1519 | lock_sock(sk); | 1504 | if (copy_from_user(&calluserdata, argp, sizeof(calluserdata))) |
| 1520 | rc = copy_to_user(argp, &x25->causediag, | ||
| 1521 | sizeof(x25->causediag)) | ||
| 1522 | ? -EFAULT : 0; | ||
| 1523 | release_sock(sk); | ||
| 1524 | break; | 1505 | break; |
| 1525 | } | 1506 | rc = -EINVAL; |
| 1507 | if (calluserdata.cudlength > X25_MAX_CUD_LEN) | ||
| 1508 | break; | ||
| 1509 | lock_sock(sk); | ||
| 1510 | x25->calluserdata = calluserdata; | ||
| 1511 | release_sock(sk); | ||
| 1512 | rc = 0; | ||
| 1513 | break; | ||
| 1514 | } | ||
| 1526 | 1515 | ||
| 1527 | case SIOCX25SCAUSEDIAG: { | 1516 | case SIOCX25GCAUSEDIAG: { |
| 1528 | struct x25_causediag causediag; | 1517 | lock_sock(sk); |
| 1529 | rc = -EFAULT; | 1518 | rc = copy_to_user(argp, &x25->causediag, sizeof(x25->causediag)) |
| 1530 | if (copy_from_user(&causediag, argp, sizeof(causediag))) | 1519 | ? -EFAULT : 0; |
| 1531 | break; | 1520 | release_sock(sk); |
| 1532 | lock_sock(sk); | 1521 | break; |
| 1533 | x25->causediag = causediag; | 1522 | } |
| 1534 | release_sock(sk); | 1523 | |
| 1535 | rc = 0; | 1524 | case SIOCX25SCAUSEDIAG: { |
| 1525 | struct x25_causediag causediag; | ||
| 1526 | rc = -EFAULT; | ||
| 1527 | if (copy_from_user(&causediag, argp, sizeof(causediag))) | ||
| 1536 | break; | 1528 | break; |
| 1529 | lock_sock(sk); | ||
| 1530 | x25->causediag = causediag; | ||
| 1531 | release_sock(sk); | ||
| 1532 | rc = 0; | ||
| 1533 | break; | ||
| 1537 | 1534 | ||
| 1538 | } | 1535 | } |
| 1539 | 1536 | ||
| 1540 | case SIOCX25SCUDMATCHLEN: { | 1537 | case SIOCX25SCUDMATCHLEN: { |
| 1541 | struct x25_subaddr sub_addr; | 1538 | struct x25_subaddr sub_addr; |
| 1542 | rc = -EINVAL; | 1539 | rc = -EINVAL; |
| 1543 | lock_sock(sk); | 1540 | lock_sock(sk); |
| 1544 | if(sk->sk_state != TCP_CLOSE) | 1541 | if(sk->sk_state != TCP_CLOSE) |
| 1545 | goto out_cud_release; | 1542 | goto out_cud_release; |
| 1546 | rc = -EFAULT; | 1543 | rc = -EFAULT; |
| 1547 | if (copy_from_user(&sub_addr, argp, | 1544 | if (copy_from_user(&sub_addr, argp, |
| 1548 | sizeof(sub_addr))) | 1545 | sizeof(sub_addr))) |
| 1549 | goto out_cud_release; | 1546 | goto out_cud_release; |
| 1550 | rc = -EINVAL; | 1547 | rc = -EINVAL; |
| 1551 | if(sub_addr.cudmatchlength > X25_MAX_CUD_LEN) | 1548 | if (sub_addr.cudmatchlength > X25_MAX_CUD_LEN) |
| 1552 | goto out_cud_release; | 1549 | goto out_cud_release; |
| 1553 | x25->cudmatchlength = sub_addr.cudmatchlength; | 1550 | x25->cudmatchlength = sub_addr.cudmatchlength; |
| 1554 | rc = 0; | 1551 | rc = 0; |
| 1555 | out_cud_release: | 1552 | out_cud_release: |
| 1556 | release_sock(sk); | 1553 | release_sock(sk); |
| 1557 | break; | 1554 | break; |
| 1558 | } | 1555 | } |
| 1559 | 1556 | ||
| 1560 | case SIOCX25CALLACCPTAPPRV: { | 1557 | case SIOCX25CALLACCPTAPPRV: { |
| 1561 | rc = -EINVAL; | 1558 | rc = -EINVAL; |
| 1562 | lock_sock(sk); | 1559 | lock_sock(sk); |
| 1563 | if (sk->sk_state != TCP_CLOSE) | 1560 | if (sk->sk_state != TCP_CLOSE) |
| 1564 | break; | ||
| 1565 | clear_bit(X25_ACCPT_APPRV_FLAG, &x25->flags); | ||
| 1566 | release_sock(sk); | ||
| 1567 | rc = 0; | ||
| 1568 | break; | 1561 | break; |
| 1569 | } | 1562 | clear_bit(X25_ACCPT_APPRV_FLAG, &x25->flags); |
| 1563 | release_sock(sk); | ||
| 1564 | rc = 0; | ||
| 1565 | break; | ||
| 1566 | } | ||
| 1570 | 1567 | ||
| 1571 | case SIOCX25SENDCALLACCPT: { | 1568 | case SIOCX25SENDCALLACCPT: { |
| 1572 | rc = -EINVAL; | 1569 | rc = -EINVAL; |
| 1573 | lock_sock(sk); | 1570 | lock_sock(sk); |
| 1574 | if (sk->sk_state != TCP_ESTABLISHED) | 1571 | if (sk->sk_state != TCP_ESTABLISHED) |
| 1575 | break; | ||
| 1576 | /* must call accptapprv above */ | ||
| 1577 | if (test_bit(X25_ACCPT_APPRV_FLAG, &x25->flags)) | ||
| 1578 | break; | ||
| 1579 | x25_write_internal(sk, X25_CALL_ACCEPTED); | ||
| 1580 | x25->state = X25_STATE_3; | ||
| 1581 | release_sock(sk); | ||
| 1582 | rc = 0; | ||
| 1583 | break; | 1572 | break; |
| 1584 | } | 1573 | /* must call accptapprv above */ |
| 1585 | 1574 | if (test_bit(X25_ACCPT_APPRV_FLAG, &x25->flags)) | |
| 1586 | default: | ||
| 1587 | rc = -ENOIOCTLCMD; | ||
| 1588 | break; | 1575 | break; |
| 1576 | x25_write_internal(sk, X25_CALL_ACCEPTED); | ||
| 1577 | x25->state = X25_STATE_3; | ||
| 1578 | release_sock(sk); | ||
| 1579 | rc = 0; | ||
| 1580 | break; | ||
| 1581 | } | ||
| 1582 | |||
| 1583 | default: | ||
| 1584 | rc = -ENOIOCTLCMD; | ||
| 1585 | break; | ||
| 1589 | } | 1586 | } |
| 1590 | 1587 | ||
| 1591 | return rc; | 1588 | return rc; |
diff --git a/net/x25/x25_dev.c b/net/x25/x25_dev.c index 9005f6daeab5..e547ca1578c3 100644 --- a/net/x25/x25_dev.c +++ b/net/x25/x25_dev.c | |||
| @@ -146,21 +146,21 @@ void x25_establish_link(struct x25_neigh *nb) | |||
| 146 | unsigned char *ptr; | 146 | unsigned char *ptr; |
| 147 | 147 | ||
| 148 | switch (nb->dev->type) { | 148 | switch (nb->dev->type) { |
| 149 | case ARPHRD_X25: | 149 | case ARPHRD_X25: |
| 150 | if ((skb = alloc_skb(1, GFP_ATOMIC)) == NULL) { | 150 | if ((skb = alloc_skb(1, GFP_ATOMIC)) == NULL) { |
| 151 | printk(KERN_ERR "x25_dev: out of memory\n"); | 151 | printk(KERN_ERR "x25_dev: out of memory\n"); |
| 152 | return; | 152 | return; |
| 153 | } | 153 | } |
| 154 | ptr = skb_put(skb, 1); | 154 | ptr = skb_put(skb, 1); |
| 155 | *ptr = X25_IFACE_CONNECT; | 155 | *ptr = X25_IFACE_CONNECT; |
| 156 | break; | 156 | break; |
| 157 | 157 | ||
| 158 | #if defined(CONFIG_LLC) || defined(CONFIG_LLC_MODULE) | 158 | #if defined(CONFIG_LLC) || defined(CONFIG_LLC_MODULE) |
| 159 | case ARPHRD_ETHER: | 159 | case ARPHRD_ETHER: |
| 160 | return; | 160 | return; |
| 161 | #endif | 161 | #endif |
| 162 | default: | 162 | default: |
| 163 | return; | 163 | return; |
| 164 | } | 164 | } |
| 165 | 165 | ||
| 166 | skb->protocol = htons(ETH_P_X25); | 166 | skb->protocol = htons(ETH_P_X25); |
| @@ -202,19 +202,19 @@ void x25_send_frame(struct sk_buff *skb, struct x25_neigh *nb) | |||
| 202 | skb_reset_network_header(skb); | 202 | skb_reset_network_header(skb); |
| 203 | 203 | ||
| 204 | switch (nb->dev->type) { | 204 | switch (nb->dev->type) { |
| 205 | case ARPHRD_X25: | 205 | case ARPHRD_X25: |
| 206 | dptr = skb_push(skb, 1); | 206 | dptr = skb_push(skb, 1); |
| 207 | *dptr = X25_IFACE_DATA; | 207 | *dptr = X25_IFACE_DATA; |
| 208 | break; | 208 | break; |
| 209 | 209 | ||
| 210 | #if defined(CONFIG_LLC) || defined(CONFIG_LLC_MODULE) | 210 | #if defined(CONFIG_LLC) || defined(CONFIG_LLC_MODULE) |
| 211 | case ARPHRD_ETHER: | 211 | case ARPHRD_ETHER: |
| 212 | kfree_skb(skb); | 212 | kfree_skb(skb); |
| 213 | return; | 213 | return; |
| 214 | #endif | 214 | #endif |
| 215 | default: | 215 | default: |
| 216 | kfree_skb(skb); | 216 | kfree_skb(skb); |
| 217 | return; | 217 | return; |
| 218 | } | 218 | } |
| 219 | 219 | ||
| 220 | skb->protocol = htons(ETH_P_X25); | 220 | skb->protocol = htons(ETH_P_X25); |
diff --git a/net/x25/x25_in.c b/net/x25/x25_in.c index 15de65f04719..0b073b51b183 100644 --- a/net/x25/x25_in.c +++ b/net/x25/x25_in.c | |||
| @@ -94,55 +94,55 @@ static int x25_state1_machine(struct sock *sk, struct sk_buff *skb, int frametyp | |||
| 94 | struct x25_sock *x25 = x25_sk(sk); | 94 | struct x25_sock *x25 = x25_sk(sk); |
| 95 | 95 | ||
| 96 | switch (frametype) { | 96 | switch (frametype) { |
| 97 | case X25_CALL_ACCEPTED: { | 97 | case X25_CALL_ACCEPTED: { |
| 98 | 98 | ||
| 99 | x25_stop_timer(sk); | 99 | x25_stop_timer(sk); |
| 100 | x25->condition = 0x00; | 100 | x25->condition = 0x00; |
| 101 | x25->vs = 0; | 101 | x25->vs = 0; |
| 102 | x25->va = 0; | 102 | x25->va = 0; |
| 103 | x25->vr = 0; | 103 | x25->vr = 0; |
| 104 | x25->vl = 0; | 104 | x25->vl = 0; |
| 105 | x25->state = X25_STATE_3; | 105 | x25->state = X25_STATE_3; |
| 106 | sk->sk_state = TCP_ESTABLISHED; | 106 | sk->sk_state = TCP_ESTABLISHED; |
| 107 | /* | 107 | /* |
| 108 | * Parse the data in the frame. | 108 | * Parse the data in the frame. |
| 109 | */ | 109 | */ |
| 110 | skb_pull(skb, X25_STD_MIN_LEN); | 110 | skb_pull(skb, X25_STD_MIN_LEN); |
| 111 | 111 | ||
| 112 | len = x25_parse_address_block(skb, &source_addr, | 112 | len = x25_parse_address_block(skb, &source_addr, |
| 113 | &dest_addr); | 113 | &dest_addr); |
| 114 | if (len > 0) | 114 | if (len > 0) |
| 115 | skb_pull(skb, len); | 115 | skb_pull(skb, len); |
| 116 | else if (len < 0) | 116 | else if (len < 0) |
| 117 | goto out_clear; | 117 | goto out_clear; |
| 118 | 118 | ||
| 119 | len = x25_parse_facilities(skb, &x25->facilities, | 119 | len = x25_parse_facilities(skb, &x25->facilities, |
| 120 | &x25->dte_facilities, | 120 | &x25->dte_facilities, |
| 121 | &x25->vc_facil_mask); | 121 | &x25->vc_facil_mask); |
| 122 | if (len > 0) | 122 | if (len > 0) |
| 123 | skb_pull(skb, len); | 123 | skb_pull(skb, len); |
| 124 | else if (len < 0) | 124 | else if (len < 0) |
| 125 | goto out_clear; | 125 | goto out_clear; |
| 126 | /* | 126 | /* |
| 127 | * Copy any Call User Data. | 127 | * Copy any Call User Data. |
| 128 | */ | 128 | */ |
| 129 | if (skb->len > 0) { | 129 | if (skb->len > 0) { |
| 130 | skb_copy_from_linear_data(skb, | 130 | skb_copy_from_linear_data(skb, |
| 131 | x25->calluserdata.cuddata, | 131 | x25->calluserdata.cuddata, |
| 132 | skb->len); | 132 | skb->len); |
| 133 | x25->calluserdata.cudlength = skb->len; | 133 | x25->calluserdata.cudlength = skb->len; |
| 134 | } | ||
| 135 | if (!sock_flag(sk, SOCK_DEAD)) | ||
| 136 | sk->sk_state_change(sk); | ||
| 137 | break; | ||
| 138 | } | 134 | } |
| 139 | case X25_CLEAR_REQUEST: | 135 | if (!sock_flag(sk, SOCK_DEAD)) |
| 140 | x25_write_internal(sk, X25_CLEAR_CONFIRMATION); | 136 | sk->sk_state_change(sk); |
| 141 | x25_disconnect(sk, ECONNREFUSED, skb->data[3], skb->data[4]); | 137 | break; |
| 142 | break; | 138 | } |
| 139 | case X25_CLEAR_REQUEST: | ||
| 140 | x25_write_internal(sk, X25_CLEAR_CONFIRMATION); | ||
| 141 | x25_disconnect(sk, ECONNREFUSED, skb->data[3], skb->data[4]); | ||
| 142 | break; | ||
| 143 | 143 | ||
| 144 | default: | 144 | default: |
| 145 | break; | 145 | break; |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | return 0; | 148 | return 0; |
| @@ -354,18 +354,18 @@ int x25_process_rx_frame(struct sock *sk, struct sk_buff *skb) | |||
| 354 | frametype = x25_decode(sk, skb, &ns, &nr, &q, &d, &m); | 354 | frametype = x25_decode(sk, skb, &ns, &nr, &q, &d, &m); |
| 355 | 355 | ||
| 356 | switch (x25->state) { | 356 | switch (x25->state) { |
| 357 | case X25_STATE_1: | 357 | case X25_STATE_1: |
| 358 | queued = x25_state1_machine(sk, skb, frametype); | 358 | queued = x25_state1_machine(sk, skb, frametype); |
| 359 | break; | 359 | break; |
| 360 | case X25_STATE_2: | 360 | case X25_STATE_2: |
| 361 | queued = x25_state2_machine(sk, skb, frametype); | 361 | queued = x25_state2_machine(sk, skb, frametype); |
| 362 | break; | 362 | break; |
| 363 | case X25_STATE_3: | 363 | case X25_STATE_3: |
| 364 | queued = x25_state3_machine(sk, skb, frametype, ns, nr, q, d, m); | 364 | queued = x25_state3_machine(sk, skb, frametype, ns, nr, q, d, m); |
| 365 | break; | 365 | break; |
| 366 | case X25_STATE_4: | 366 | case X25_STATE_4: |
| 367 | queued = x25_state4_machine(sk, skb, frametype); | 367 | queued = x25_state4_machine(sk, skb, frametype); |
| 368 | break; | 368 | break; |
| 369 | } | 369 | } |
| 370 | 370 | ||
| 371 | x25_kick(sk); | 371 | x25_kick(sk); |
diff --git a/net/x25/x25_link.c b/net/x25/x25_link.c index 21306928d47f..037958ff8eed 100644 --- a/net/x25/x25_link.c +++ b/net/x25/x25_link.c | |||
| @@ -76,30 +76,29 @@ void x25_link_control(struct sk_buff *skb, struct x25_neigh *nb, | |||
| 76 | int confirm; | 76 | int confirm; |
| 77 | 77 | ||
| 78 | switch (frametype) { | 78 | switch (frametype) { |
| 79 | case X25_RESTART_REQUEST: | 79 | case X25_RESTART_REQUEST: |
| 80 | confirm = !x25_t20timer_pending(nb); | 80 | confirm = !x25_t20timer_pending(nb); |
| 81 | x25_stop_t20timer(nb); | 81 | x25_stop_t20timer(nb); |
| 82 | nb->state = X25_LINK_STATE_3; | 82 | nb->state = X25_LINK_STATE_3; |
| 83 | if (confirm) | 83 | if (confirm) |
| 84 | x25_transmit_restart_confirmation(nb); | 84 | x25_transmit_restart_confirmation(nb); |
| 85 | break; | 85 | break; |
| 86 | 86 | ||
| 87 | case X25_RESTART_CONFIRMATION: | 87 | case X25_RESTART_CONFIRMATION: |
| 88 | x25_stop_t20timer(nb); | 88 | x25_stop_t20timer(nb); |
| 89 | nb->state = X25_LINK_STATE_3; | 89 | nb->state = X25_LINK_STATE_3; |
| 90 | break; | 90 | break; |
| 91 | 91 | ||
| 92 | case X25_DIAGNOSTIC: | 92 | case X25_DIAGNOSTIC: |
| 93 | printk(KERN_WARNING "x25: diagnostic #%d - " | 93 | printk(KERN_WARNING "x25: diagnostic #%d - %02X %02X %02X\n", |
| 94 | "%02X %02X %02X\n", | 94 | skb->data[3], skb->data[4], |
| 95 | skb->data[3], skb->data[4], | 95 | skb->data[5], skb->data[6]); |
| 96 | skb->data[5], skb->data[6]); | 96 | break; |
| 97 | break; | 97 | |
| 98 | 98 | default: | |
| 99 | default: | 99 | printk(KERN_WARNING "x25: received unknown %02X with LCI 000\n", |
| 100 | printk(KERN_WARNING "x25: received unknown %02X " | 100 | frametype); |
| 101 | "with LCI 000\n", frametype); | 101 | break; |
| 102 | break; | ||
| 103 | } | 102 | } |
| 104 | 103 | ||
| 105 | if (nb->state == X25_LINK_STATE_3) | 104 | if (nb->state == X25_LINK_STATE_3) |
| @@ -193,18 +192,18 @@ void x25_transmit_clear_request(struct x25_neigh *nb, unsigned int lci, | |||
| 193 | void x25_transmit_link(struct sk_buff *skb, struct x25_neigh *nb) | 192 | void x25_transmit_link(struct sk_buff *skb, struct x25_neigh *nb) |
| 194 | { | 193 | { |
| 195 | switch (nb->state) { | 194 | switch (nb->state) { |
| 196 | case X25_LINK_STATE_0: | 195 | case X25_LINK_STATE_0: |
| 197 | skb_queue_tail(&nb->queue, skb); | 196 | skb_queue_tail(&nb->queue, skb); |
| 198 | nb->state = X25_LINK_STATE_1; | 197 | nb->state = X25_LINK_STATE_1; |
| 199 | x25_establish_link(nb); | 198 | x25_establish_link(nb); |
| 200 | break; | 199 | break; |
| 201 | case X25_LINK_STATE_1: | 200 | case X25_LINK_STATE_1: |
| 202 | case X25_LINK_STATE_2: | 201 | case X25_LINK_STATE_2: |
| 203 | skb_queue_tail(&nb->queue, skb); | 202 | skb_queue_tail(&nb->queue, skb); |
| 204 | break; | 203 | break; |
| 205 | case X25_LINK_STATE_3: | 204 | case X25_LINK_STATE_3: |
| 206 | x25_send_frame(skb, nb); | 205 | x25_send_frame(skb, nb); |
| 207 | break; | 206 | break; |
| 208 | } | 207 | } |
| 209 | } | 208 | } |
| 210 | 209 | ||
| @@ -214,14 +213,14 @@ void x25_transmit_link(struct sk_buff *skb, struct x25_neigh *nb) | |||
| 214 | void x25_link_established(struct x25_neigh *nb) | 213 | void x25_link_established(struct x25_neigh *nb) |
| 215 | { | 214 | { |
| 216 | switch (nb->state) { | 215 | switch (nb->state) { |
| 217 | case X25_LINK_STATE_0: | 216 | case X25_LINK_STATE_0: |
| 218 | nb->state = X25_LINK_STATE_2; | 217 | nb->state = X25_LINK_STATE_2; |
| 219 | break; | 218 | break; |
| 220 | case X25_LINK_STATE_1: | 219 | case X25_LINK_STATE_1: |
| 221 | x25_transmit_restart_request(nb); | 220 | x25_transmit_restart_request(nb); |
| 222 | nb->state = X25_LINK_STATE_2; | 221 | nb->state = X25_LINK_STATE_2; |
| 223 | x25_start_t20timer(nb); | 222 | x25_start_t20timer(nb); |
| 224 | break; | 223 | break; |
| 225 | } | 224 | } |
| 226 | } | 225 | } |
| 227 | 226 | ||
diff --git a/net/x25/x25_subr.c b/net/x25/x25_subr.c index dc20cf12f39b..24a342ebc7f5 100644 --- a/net/x25/x25_subr.c +++ b/net/x25/x25_subr.c | |||
| @@ -126,32 +126,30 @@ void x25_write_internal(struct sock *sk, int frametype) | |||
| 126 | * Adjust frame size. | 126 | * Adjust frame size. |
| 127 | */ | 127 | */ |
| 128 | switch (frametype) { | 128 | switch (frametype) { |
| 129 | case X25_CALL_REQUEST: | 129 | case X25_CALL_REQUEST: |
| 130 | len += 1 + X25_ADDR_LEN + X25_MAX_FAC_LEN + | 130 | len += 1 + X25_ADDR_LEN + X25_MAX_FAC_LEN + X25_MAX_CUD_LEN; |
| 131 | X25_MAX_CUD_LEN; | 131 | break; |
| 132 | break; | 132 | case X25_CALL_ACCEPTED: /* fast sel with no restr on resp */ |
| 133 | case X25_CALL_ACCEPTED: /* fast sel with no restr on resp */ | 133 | if (x25->facilities.reverse & 0x80) { |
| 134 | if(x25->facilities.reverse & 0x80) { | 134 | len += 1 + X25_MAX_FAC_LEN + X25_MAX_CUD_LEN; |
| 135 | len += 1 + X25_MAX_FAC_LEN + X25_MAX_CUD_LEN; | 135 | } else { |
| 136 | } else { | 136 | len += 1 + X25_MAX_FAC_LEN; |
| 137 | len += 1 + X25_MAX_FAC_LEN; | 137 | } |
| 138 | } | 138 | break; |
| 139 | break; | 139 | case X25_CLEAR_REQUEST: |
| 140 | case X25_CLEAR_REQUEST: | 140 | case X25_RESET_REQUEST: |
| 141 | case X25_RESET_REQUEST: | 141 | len += 2; |
| 142 | len += 2; | 142 | break; |
| 143 | break; | 143 | case X25_RR: |
| 144 | case X25_RR: | 144 | case X25_RNR: |
| 145 | case X25_RNR: | 145 | case X25_REJ: |
| 146 | case X25_REJ: | 146 | case X25_CLEAR_CONFIRMATION: |
| 147 | case X25_CLEAR_CONFIRMATION: | 147 | case X25_INTERRUPT_CONFIRMATION: |
| 148 | case X25_INTERRUPT_CONFIRMATION: | 148 | case X25_RESET_CONFIRMATION: |
| 149 | case X25_RESET_CONFIRMATION: | 149 | break; |
| 150 | break; | 150 | default: |
| 151 | default: | 151 | printk(KERN_ERR "X.25: invalid frame type %02X\n", frametype); |
| 152 | printk(KERN_ERR "X.25: invalid frame type %02X\n", | 152 | return; |
| 153 | frametype); | ||
| 154 | return; | ||
| 155 | } | 153 | } |
| 156 | 154 | ||
| 157 | if ((skb = alloc_skb(len, GFP_ATOMIC)) == NULL) | 155 | if ((skb = alloc_skb(len, GFP_ATOMIC)) == NULL) |
| @@ -276,20 +274,20 @@ int x25_decode(struct sock *sk, struct sk_buff *skb, int *ns, int *nr, int *q, | |||
| 276 | *ns = *nr = *q = *d = *m = 0; | 274 | *ns = *nr = *q = *d = *m = 0; |
| 277 | 275 | ||
| 278 | switch (frame[2]) { | 276 | switch (frame[2]) { |
| 279 | case X25_CALL_REQUEST: | 277 | case X25_CALL_REQUEST: |
| 280 | case X25_CALL_ACCEPTED: | 278 | case X25_CALL_ACCEPTED: |
| 281 | case X25_CLEAR_REQUEST: | 279 | case X25_CLEAR_REQUEST: |
| 282 | case X25_CLEAR_CONFIRMATION: | 280 | case X25_CLEAR_CONFIRMATION: |
| 283 | case X25_INTERRUPT: | 281 | case X25_INTERRUPT: |
| 284 | case X25_INTERRUPT_CONFIRMATION: | 282 | case X25_INTERRUPT_CONFIRMATION: |
| 285 | case X25_RESET_REQUEST: | 283 | case X25_RESET_REQUEST: |
| 286 | case X25_RESET_CONFIRMATION: | 284 | case X25_RESET_CONFIRMATION: |
| 287 | case X25_RESTART_REQUEST: | 285 | case X25_RESTART_REQUEST: |
| 288 | case X25_RESTART_CONFIRMATION: | 286 | case X25_RESTART_CONFIRMATION: |
| 289 | case X25_REGISTRATION_REQUEST: | 287 | case X25_REGISTRATION_REQUEST: |
| 290 | case X25_REGISTRATION_CONFIRMATION: | 288 | case X25_REGISTRATION_CONFIRMATION: |
| 291 | case X25_DIAGNOSTIC: | 289 | case X25_DIAGNOSTIC: |
| 292 | return frame[2]; | 290 | return frame[2]; |
| 293 | } | 291 | } |
| 294 | 292 | ||
| 295 | if (x25->neighbour->extended) { | 293 | if (x25->neighbour->extended) { |
