• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/ax25/

Lines Matching defs:ax25

29 #include <net/ax25.h>
68 static void ax25_cb_del(ax25_cb *ax25)
70 if (!hlist_unhashed(&ax25->ax25_node)) {
72 hlist_del_init(&ax25->ax25_node);
74 ax25_cb_put(ax25);
146 void ax25_cb_add(ax25_cb *ax25)
149 ax25_cb_hold(ax25);
150 hlist_add_head(&ax25->ax25_node, &ax25_list);
280 ax25_cb *ax25=(ax25_cb *)data;
283 sk=ax25->sk;
287 ax25_destroy_socket(ax25);
298 void ax25_destroy_socket(ax25_cb *ax25)
302 ax25_cb_del(ax25);
304 ax25_stop_heartbeat(ax25);
305 ax25_stop_t1timer(ax25);
306 ax25_stop_t2timer(ax25);
307 ax25_stop_t3timer(ax25);
308 ax25_stop_idletimer(ax25);
310 ax25_clear_queues(ax25); /* Flush the queues */
312 if (ax25->sk != NULL) {
313 while ((skb = skb_dequeue(&ax25->sk->sk_receive_queue)) != NULL) {
314 if (skb->sk != ax25->sk) {
330 skb_queue_purge(&ax25->sk->sk_write_queue);
333 if (ax25->sk != NULL) {
334 if (sk_has_allocations(ax25->sk)) {
336 setup_timer(&ax25->dtimer, ax25_destroy_timer,
337 (unsigned long)ax25);
338 ax25->dtimer.expires = jiffies + 2 * HZ;
339 add_timer(&ax25->dtimer);
341 struct sock *sk=ax25->sk;
342 ax25->sk=NULL;
346 ax25_cb_put(ax25);
360 ax25_cb *ax25;
380 if ((ax25 = ax25_find_cb(&ax25_ctl.source_addr, &ax25_ctl.dest_addr, &digi, ax25_dev->dev)) == NULL)
385 ax25_send_control(ax25, AX25_DISC, AX25_POLLON, AX25_COMMAND);
387 if (ax25_dev->dama.slave && ax25->ax25_dev->values[AX25_VALUES_PROTOCOL] == AX25_PROTO_DAMA_SLAVE)
388 ax25_dama_off(ax25);
390 ax25_disconnect(ax25, ENETRESET);
394 if (ax25->modulus == AX25_MODULUS) {
401 ax25->window = ax25_ctl.arg;
407 ax25->rtt = (ax25_ctl.arg * HZ) / 2;
408 ax25->t1 = ax25_ctl.arg * HZ;
414 ax25->t2 = ax25_ctl.arg * HZ;
420 ax25->n2count = 0;
421 ax25->n2 = ax25_ctl.arg;
425 ax25->t3 = ax25_ctl.arg * HZ;
429 ax25->idle = ax25_ctl.arg * 60 * HZ;
435 ax25->paclen = ax25_ctl.arg;
443 ax25_cb_put(ax25);
451 static void ax25_fillin_cb_from_dev(ax25_cb *ax25, ax25_dev *ax25_dev)
453 ax25->rtt = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T1]) / 2;
454 ax25->t1 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T1]);
455 ax25->t2 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T2]);
456 ax25->t3 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T3]);
457 ax25->n2 = ax25_dev->values[AX25_VALUES_N2];
458 ax25->paclen = ax25_dev->values[AX25_VALUES_PACLEN];
459 ax25->idle = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_IDLE]);
460 ax25->backoff = ax25_dev->values[AX25_VALUES_BACKOFF];
463 ax25->modulus = AX25_EMODULUS;
464 ax25->window = ax25_dev->values[AX25_VALUES_EWINDOW];
466 ax25->modulus = AX25_MODULUS;
467 ax25->window = ax25_dev->values[AX25_VALUES_WINDOW];
475 void ax25_fillin_cb(ax25_cb *ax25, ax25_dev *ax25_dev)
477 ax25->ax25_dev = ax25_dev;
479 if (ax25->ax25_dev != NULL) {
480 ax25_fillin_cb_from_dev(ax25, ax25_dev);
487 ax25->rtt = msecs_to_jiffies(AX25_DEF_T1) / 2;
488 ax25->t1 = msecs_to_jiffies(AX25_DEF_T1);
489 ax25->t2 = msecs_to_jiffies(AX25_DEF_T2);
490 ax25->t3 = msecs_to_jiffies(AX25_DEF_T3);
491 ax25->n2 = AX25_DEF_N2;
492 ax25->paclen = AX25_DEF_PACLEN;
493 ax25->idle = msecs_to_jiffies(AX25_DEF_IDLE);
494 ax25->backoff = AX25_DEF_BACKOFF;
497 ax25->modulus = AX25_EMODULUS;
498 ax25->window = AX25_DEF_EWINDOW;
500 ax25->modulus = AX25_MODULUS;
501 ax25->window = AX25_DEF_WINDOW;
510 ax25_cb *ax25;
512 if ((ax25 = kzalloc(sizeof(*ax25), GFP_ATOMIC)) == NULL)
515 atomic_set(&ax25->refcount, 1);
517 skb_queue_head_init(&ax25->write_queue);
518 skb_queue_head_init(&ax25->frag_queue);
519 skb_queue_head_init(&ax25->ack_queue);
520 skb_queue_head_init(&ax25->reseq_queue);
522 ax25_setup_timers(ax25);
524 ax25_fillin_cb(ax25, NULL);
526 ax25->state = AX25_STATE_0;
528 return ax25;
540 ax25_cb *ax25;
555 ax25 = ax25_sk(sk);
559 if (ax25->modulus == AX25_MODULUS) {
570 ax25->window = opt;
578 ax25->rtt = (opt * HZ) >> 1;
579 ax25->t1 = opt * HZ;
587 ax25->t2 = opt * HZ;
595 ax25->n2 = opt;
603 ax25->t3 = opt * HZ;
611 ax25->idle = opt * 60 * HZ;
619 ax25->backoff = opt;
623 ax25->modulus = opt ? AX25_EMODULUS : AX25_MODULUS;
627 ax25->pidincl = opt ? 1 : 0;
631 ax25->iamdigi = opt ? 1 : 0;
639 ax25->paclen = opt;
664 ax25->ax25_dev = ax25_dev_ax25dev(dev);
665 ax25_fillin_cb(ax25, ax25->ax25_dev);
681 ax25_cb *ax25;
701 ax25 = ax25_sk(sk);
705 val = ax25->window;
709 val = ax25->t1 / HZ;
713 val = ax25->t2 / HZ;
717 val = ax25->n2;
721 val = ax25->t3 / HZ;
725 val = ax25->idle / (60 * HZ);
729 val = ax25->backoff;
733 val = (ax25->modulus == AX25_EMODULUS);
737 val = ax25->pidincl;
741 val = ax25->iamdigi;
745 val = ax25->paclen;
749 ax25_dev = ax25->ax25_dev;
803 ax25_cb *ax25;
857 ax25 = sk->sk_protinfo = ax25_create_cb();
858 if (!ax25) {
869 ax25->sk = sk;
877 ax25_cb *ax25, *oax25;
883 if ((ax25 = ax25_create_cb()) == NULL) {
895 ax25_cb_put(ax25);
911 ax25->modulus = oax25->modulus;
912 ax25->backoff = oax25->backoff;
913 ax25->pidincl = oax25->pidincl;
914 ax25->iamdigi = oax25->iamdigi;
915 ax25->rtt = oax25->rtt;
916 ax25->t1 = oax25->t1;
917 ax25->t2 = oax25->t2;
918 ax25->t3 = oax25->t3;
919 ax25->n2 = oax25->n2;
920 ax25->idle = oax25->idle;
921 ax25->paclen = oax25->paclen;
922 ax25->window = oax25->window;
924 ax25->ax25_dev = ax25_dev;
925 ax25->source_addr = oax25->source_addr;
928 ax25->digipeat = kmemdup(oax25->digipeat, sizeof(ax25_digi),
930 if (ax25->digipeat == NULL) {
932 ax25_cb_put(ax25);
937 sk->sk_protinfo = ax25;
939 ax25->sk = sk;
947 ax25_cb *ax25;
955 ax25 = ax25_sk(sk);
958 switch (ax25->state) {
961 ax25_disconnect(ax25, 0);
963 ax25_destroy_socket(ax25);
968 ax25_send_control(ax25, AX25_DISC, AX25_POLLON, AX25_COMMAND);
970 ax25_disconnect(ax25, 0);
972 ax25_destroy_socket(ax25);
977 ax25_clear_queues(ax25);
978 ax25->n2count = 0;
980 switch (ax25->ax25_dev->values[AX25_VALUES_PROTOCOL]) {
983 ax25_send_control(ax25,
987 ax25_stop_t2timer(ax25);
988 ax25_stop_t3timer(ax25);
989 ax25_stop_idletimer(ax25);
993 ax25_stop_t3timer(ax25);
994 ax25_stop_idletimer(ax25);
998 ax25_calculate_t1(ax25);
999 ax25_start_t1timer(ax25);
1000 ax25->state = AX25_STATE_2;
1014 ax25_destroy_socket(ax25);
1037 ax25_cb *ax25;
1065 ax25 = ax25_sk(sk);
1071 ax25->source_addr = call;
1076 if (ax25->ax25_dev != NULL)
1093 ax25_fillin_cb(ax25, ax25_dev);
1096 ax25_cb_add(ax25);
1109 ax25_cb *ax25 = ax25_sk(sk), *ax25t;
1163 kfree(ax25->digipeat);
1164 ax25->digipeat = NULL;
1187 AX25_HBIT) && ax25->iamdigi) {
1207 if ((err = ax25_rt_autobind(ax25, &fsa->fsa_ax25.sax25_call)) < 0) {
1212 ax25_fillin_cb(ax25, ax25->ax25_dev);
1213 ax25_cb_add(ax25);
1215 if (ax25->ax25_dev == NULL) {
1223 (ax25t=ax25_find_cb(&ax25->source_addr, &fsa->fsa_ax25.sax25_call, digi,
1224 ax25->ax25_dev->dev))) {
1231 ax25->dest_addr = fsa->fsa_ax25.sax25_call;
1232 ax25->digipeat = digi;
1245 switch (ax25->ax25_dev->values[AX25_VALUES_PROTOCOL]) {
1248 ax25_std_establish_data_link(ax25);
1253 ax25->modulus = AX25_MODULUS;
1254 ax25->window = ax25->ax25_dev->values[AX25_VALUES_WINDOW];
1255 if (ax25->ax25_dev->dama.slave)
1256 ax25_ds_establish_data_link(ax25);
1258 ax25_std_establish_data_link(ax25);
1263 ax25->state = AX25_STATE_1;
1265 ax25_start_heartbeat(ax25);
1385 ax25_cb *ax25;
1390 ax25 = ax25_sk(sk);
1399 fsa->fsa_ax25.sax25_call = ax25->dest_addr;
1401 if (ax25->digipeat != NULL) {
1402 ndigi = ax25->digipeat->ndigi;
1406 ax25->digipeat->calls[i];
1410 fsa->fsa_ax25.sax25_call = ax25->source_addr;
1412 if (ax25->ax25_dev != NULL) {
1414 ax25->ax25_dev->dev->dev_addr, AX25_ADDR_LEN);
1435 ax25_cb *ax25;
1443 ax25 = ax25_sk(sk);
1456 if (ax25->ax25_dev == NULL) {
1461 if (len > ax25->ax25_dev->dev->mtu) {
1510 ax25cmp(&ax25->dest_addr, &sax.sax25_call)) {
1524 sax.sax25_call = ax25->dest_addr;
1525 dp = ax25->digipeat;
1532 size = len + ax25->ax25_dev->dev->hard_header_len;
1552 if (!ax25->pidincl)
1566 ax25_output(ax25, ax25->paclen, skb);
1580 lv = ax25_addr_build(skb->data, &ax25->source_addr, &sax.sax25_call,
1593 ax25_queue_xmit(skb, ax25->ax25_dev->dev);
1766 ax25_cb *ax25 = ax25_sk(sk);
1769 ax25_info.t1 = ax25->t1 / HZ;
1770 ax25_info.t2 = ax25->t2 / HZ;
1771 ax25_info.t3 = ax25->t3 / HZ;
1772 ax25_info.idle = ax25->idle / (60 * HZ);
1773 ax25_info.n2 = ax25->n2;
1774 ax25_info.t1timer = ax25_display_timer(&ax25->t1timer) / HZ;
1775 ax25_info.t2timer = ax25_display_timer(&ax25->t2timer) / HZ;
1776 ax25_info.t3timer = ax25_display_timer(&ax25->t3timer) / HZ;
1777 ax25_info.idletimer = ax25_display_timer(&ax25->idletimer) / (60 * HZ);
1778 ax25_info.n2count = ax25->n2count;
1779 ax25_info.state = ax25->state;
1782 ax25_info.vs = ax25->vs;
1783 ax25_info.vr = ax25->vr;
1784 ax25_info.va = ax25->va;
1785 ax25_info.vs_max = ax25->vs; /* reserved */
1786 ax25_info.paclen = ax25->paclen;
1787 ax25_info.window = ax25->window;
1871 ax25_cb *ax25 = hlist_entry(v, struct ax25_cb, ax25_node);
1882 (long) ax25,
1883 ax25->ax25_dev == NULL? "???" : ax25->ax25_dev->dev->name,
1884 ax2asc(buf, &ax25->source_addr),
1885 ax25->iamdigi? "*":"");
1886 seq_printf(seq, "%s", ax2asc(buf, &ax25->dest_addr));
1888 for (k=0; (ax25->digipeat != NULL) && (k < ax25->digipeat->ndigi); k++) {
1890 ax2asc(buf, &ax25->digipeat->calls[k]),
1891 ax25->digipeat->repeated[k]? "*":"");
1895 ax25->state,
1896 ax25->vs, ax25->vr, ax25->va,
1897 ax25_display_timer(&ax25->t1timer) / HZ, ax25->t1 / HZ,
1898 ax25_display_timer(&ax25->t2timer) / HZ, ax25->t2 / HZ,
1899 ax25_display_timer(&ax25->t3timer) / HZ, ax25->t3 / HZ,
1900 ax25_display_timer(&ax25->idletimer) / (60 * HZ),
1901 ax25->idle / (60 * HZ),
1902 ax25->n2count, ax25->n2,
1903 ax25->rtt / HZ,
1904 ax25->window,
1905 ax25->paclen);
1907 if (ax25->sk != NULL) {
1909 sk_wmem_alloc_get(ax25->sk),
1910 sk_rmem_alloc_get(ax25->sk),
1911 sock_i_ino(ax25->sk));
1992 proc_net_fops_create(&init_net, "ax25", S_IRUGO, &ax25_info_fops);
2008 proc_net_remove(&init_net, "ax25");