taglinefilesource code
ax25255include/net/sock.hax25_cb      *ax25;
ax25184net/ax25/af_ax25.cstatic void ax25_remove_socket(ax25_cb *ax25)
ax25192net/ax25/af_ax25.cif ((s = ax25_list) == ax25) {
ax25199net/ax25/af_ax25.cif (s->next == ax25) {
ax25200net/ax25/af_ax25.cs->next = ax25->next;
ax25259net/ax25/af_ax25.cstatic void ax25_insert_socket(ax25_cb *ax25)
ax25266net/ax25/af_ax25.cax25->next = ax25_list;
ax25267net/ax25/af_ax25.cax25_list  = ax25;
ax25409net/ax25/af_ax25.cvoid ax25_destroy_socket(ax25_cb *ax25)  /* Not static as its used by the timer */
ax25417net/ax25/af_ax25.cdel_timer(&ax25->timer);
ax25419net/ax25/af_ax25.cax25_remove_socket(ax25);
ax25420net/ax25/af_ax25.cax25_clear_queues(ax25);  /* Flush the queues */
ax25422net/ax25/af_ax25.cif (ax25->sk != NULL) {
ax25423net/ax25/af_ax25.cwhile ((skb = skb_dequeue(&ax25->sk->receive_queue)) != NULL) {
ax25424net/ax25/af_ax25.cif (skb->sk != ax25->sk) {      /* A pending connection */
ax25426net/ax25/af_ax25.cax25_set_timer(skb->sk->ax25);
ax25427net/ax25/af_ax25.cskb->sk->ax25->state = AX25_STATE_0;
ax25434net/ax25/af_ax25.cif (ax25->sk != NULL) {
ax25435net/ax25/af_ax25.cif (ax25->sk->wmem_alloc || ax25->sk->rmem_alloc) { /* Defer: outstanding buffers */
ax25436net/ax25/af_ax25.cinit_timer(&ax25->timer);
ax25437net/ax25/af_ax25.cax25->timer.expires  = jiffies + 10 * HZ;
ax25438net/ax25/af_ax25.cax25->timer.function = ax25_destroy_timer;
ax25439net/ax25/af_ax25.cax25->timer.data     = (unsigned long)ax25;
ax25440net/ax25/af_ax25.cadd_timer(&ax25->timer);
ax25442net/ax25/af_ax25.cif (ax25->digipeat != NULL) {
ax25443net/ax25/af_ax25.ckfree_s(ax25->digipeat, sizeof(ax25_digi));
ax25444net/ax25/af_ax25.cax25->digipeat = NULL;
ax25447net/ax25/af_ax25.ckfree_s(ax25->sk, sizeof(*ax25->sk));
ax25448net/ax25/af_ax25.ckfree_s(ax25, sizeof(*ax25));
ax25451net/ax25/af_ax25.cif (ax25->digipeat != NULL) {
ax25452net/ax25/af_ax25.ckfree_s(ax25->digipeat, sizeof(ax25_digi));
ax25453net/ax25/af_ax25.cax25->digipeat = NULL;
ax25455net/ax25/af_ax25.ckfree_s(ax25, sizeof(*ax25));
ax25539net/ax25/af_ax25.cax25_cb *ax25;
ax25551net/ax25/af_ax25.cif ((ax25 = ax25_find_cb(&ax25_ctl.source_addr, &ax25_ctl.dest_addr, dev)) == NULL)
ax25557net/ax25/af_ax25.cnr_link_failed(&ax25->dest_addr, ax25->device);
ax25559net/ax25/af_ax25.cax25_clear_queues(ax25);
ax25560net/ax25/af_ax25.cax25_send_control(ax25, DISC, POLLON, C_COMMAND);
ax25562net/ax25/af_ax25.cax25->state = AX25_STATE_0;
ax25563net/ax25/af_ax25.cif (ax25->sk != NULL) {
ax25564net/ax25/af_ax25.cax25->sk->state = TCP_CLOSE;
ax25565net/ax25/af_ax25.cax25->sk->err   = ENETRESET;
ax25566net/ax25/af_ax25.cif (!ax25->sk->dead)
ax25567net/ax25/af_ax25.cax25->sk->state_change(ax25->sk);
ax25568net/ax25/af_ax25.cax25->sk->dead  = 1;
ax25571net/ax25/af_ax25.cax25_dama_off(ax25);
ax25572net/ax25/af_ax25.cax25_set_timer(ax25);
ax25575net/ax25/af_ax25.cif (ax25->modulus == MODULUS) {
ax25582net/ax25/af_ax25.cax25->window = ax25_ctl.arg;
ax25587net/ax25/af_ax25.cax25->rtt = (ax25_ctl.arg * PR_SLOWHZ) / 2;
ax25588net/ax25/af_ax25.cax25->t1 = ax25_ctl.arg * PR_SLOWHZ;
ax25590net/ax25/af_ax25.cif (ax25->t1timer > ax25->t1)
ax25591net/ax25/af_ax25.cax25->t1timer = ax25->t1;
ax25598net/ax25/af_ax25.cax25->t2 = ax25_ctl.arg * PR_SLOWHZ;
ax25599net/ax25/af_ax25.cif (ax25->t2timer > ax25->t2)
ax25600net/ax25/af_ax25.cax25->t2timer = ax25->t2;
ax25606net/ax25/af_ax25.cax25->n2count = 0;
ax25607net/ax25/af_ax25.cax25->n2 = ax25_ctl.arg;
ax25613net/ax25/af_ax25.cax25->t3 = ax25_ctl.arg * PR_SLOWHZ;
ax25614net/ax25/af_ax25.cif (ax25->t3timer != 0)
ax25615net/ax25/af_ax25.cax25->t3timer = ax25->t3;
ax25621net/ax25/af_ax25.cif (ax25->idle == 0)
ax25624net/ax25/af_ax25.cax25->idle = ax25_ctl.arg * PR_SLOWHZ * 60;
ax25625net/ax25/af_ax25.cif (ax25->idletimer != 0)
ax25626net/ax25/af_ax25.cax25->idletimer = ax25->idle;
ax25635net/ax25/af_ax25.cax25->paclen = ax25_ctl.arg;
ax25650net/ax25/af_ax25.cax25_cb *ax25;
ax25652net/ax25/af_ax25.cif ((ax25 = (ax25_cb *)kmalloc(sizeof(*ax25), GFP_ATOMIC)) == NULL)
ax25655net/ax25/af_ax25.cskb_queue_head_init(&ax25->write_queue);
ax25656net/ax25/af_ax25.cskb_queue_head_init(&ax25->frag_queue);
ax25657net/ax25/af_ax25.cskb_queue_head_init(&ax25->ack_queue);
ax25658net/ax25/af_ax25.cskb_queue_head_init(&ax25->reseq_queue);
ax25660net/ax25/af_ax25.cinit_timer(&ax25->timer);
ax25662net/ax25/af_ax25.cax25->dama_slave = 0;  /* dl1bke 951121 */
ax25664net/ax25/af_ax25.cax25->rtt     = (AX25_DEF_T1 * PR_SLOWHZ) / 2;
ax25665net/ax25/af_ax25.cax25->t1      = AX25_DEF_T1 * PR_SLOWHZ;
ax25666net/ax25/af_ax25.cax25->t2      = AX25_DEF_T2 * PR_SLOWHZ;
ax25667net/ax25/af_ax25.cax25->t3      = AX25_DEF_T3 * PR_SLOWHZ;
ax25668net/ax25/af_ax25.cax25->n2      = AX25_DEF_N2;
ax25669net/ax25/af_ax25.cax25->paclen  = AX25_DEF_PACLEN;
ax25670net/ax25/af_ax25.cax25->idle    = 0;
ax25672net/ax25/af_ax25.cax25->modulus   = AX25_DEF_AXDEFMODE;
ax25673net/ax25/af_ax25.cax25->fragno    = 0;
ax25674net/ax25/af_ax25.cax25->fraglen   = 0;
ax25675net/ax25/af_ax25.cax25->hdrincl   = 0;
ax25676net/ax25/af_ax25.cax25->backoff   = AX25_DEF_BACKOFF == 'E';
ax25677net/ax25/af_ax25.cax25->condition = 0x00;
ax25678net/ax25/af_ax25.cax25->t1timer   = 0;
ax25679net/ax25/af_ax25.cax25->t2timer   = 0;
ax25680net/ax25/af_ax25.cax25->t3timer   = 0;
ax25681net/ax25/af_ax25.cax25->n2count   = 0;
ax25682net/ax25/af_ax25.cax25->idletimer = 0;
ax25684net/ax25/af_ax25.cax25->va      = 0;
ax25685net/ax25/af_ax25.cax25->vr      = 0;
ax25686net/ax25/af_ax25.cax25->vs      = 0;
ax25689net/ax25/af_ax25.cax25->window = AX25_DEF_EWINDOW;
ax25691net/ax25/af_ax25.cax25->window = AX25_DEF_WINDOW;
ax25693net/ax25/af_ax25.cax25->device   = NULL;
ax25694net/ax25/af_ax25.cax25->digipeat = NULL;
ax25695net/ax25/af_ax25.cax25->sk       = NULL;
ax25697net/ax25/af_ax25.cax25->state    = AX25_STATE_0;
ax25699net/ax25/af_ax25.cmemset(&ax25->dest_addr,   '\0', AX25_ADDR_LEN);
ax25700net/ax25/af_ax25.cmemset(&ax25->source_addr, '\0', AX25_ADDR_LEN);
ax25702net/ax25/af_ax25.creturn ax25;
ax25713net/ax25/af_ax25.cax25_cb *ax25;
ax25716net/ax25/af_ax25.cfor (ax25 = ax25_list; ax25 != NULL; ax25 = ax25->next) {
ax25717net/ax25/af_ax25.cif (ax25->device == dev && ax25->dama_slave) {
ax25730net/ax25/af_ax25.cstatic void ax25_fillin_cb(ax25_cb *ax25, struct device *dev)
ax25732net/ax25/af_ax25.cax25->device = dev;
ax25734net/ax25/af_ax25.cax25->rtt    = ax25_dev_get_value(dev, AX25_VALUES_T1);
ax25735net/ax25/af_ax25.cax25->t1     = ax25_dev_get_value(dev, AX25_VALUES_T1);
ax25736net/ax25/af_ax25.cax25->t2     = ax25_dev_get_value(dev, AX25_VALUES_T2);
ax25737net/ax25/af_ax25.cax25->t3     = ax25_dev_get_value(dev, AX25_VALUES_T3);
ax25738net/ax25/af_ax25.cax25->n2     = ax25_dev_get_value(dev, AX25_VALUES_N2);
ax25739net/ax25/af_ax25.cax25->paclen = ax25_dev_get_value(dev, AX25_VALUES_PACLEN);
ax25741net/ax25/af_ax25.cax25->dama_slave = 0;
ax25742net/ax25/af_ax25.cax25->idle = 0;
ax25744net/ax25/af_ax25.cax25->modulus = ax25_dev_get_value(dev, AX25_VALUES_AXDEFMODE);
ax25746net/ax25/af_ax25.cif (ax25->modulus == MODULUS) {
ax25747net/ax25/af_ax25.cax25->window = ax25_dev_get_value(dev, AX25_VALUES_WINDOW);
ax25749net/ax25/af_ax25.cax25->window = ax25_dev_get_value(dev, AX25_VALUES_EWINDOW);
ax25752net/ax25/af_ax25.cax25->backoff = ax25_dev_get_value(dev, AX25_VALUES_BACKOFF) == 'E';
ax25758net/ax25/af_ax25.cax25_cb *ax25;
ax25766net/ax25/af_ax25.cfor (ax25 = ax25_list; ax25 != NULL; ax25 = ax25->next) {
ax25767net/ax25/af_ax25.cif (ax25->sk != NULL && ax25->sk->type != SOCK_SEQPACKET)
ax25770net/ax25/af_ax25.cif (ax25cmp(&ax25->source_addr, src) == 0 && ax25cmp(&ax25->dest_addr, dest) == 0 && ax25->device == dev) {
ax25771net/ax25/af_ax25.cax25_output(ax25, skb);
ax25772net/ax25/af_ax25.cax25->idletimer = ax25->idle;  /* dl1bke 960228 */
ax25777net/ax25/af_ax25.cif ((ax25 = ax25_create_cb()) == NULL)
ax25780net/ax25/af_ax25.cax25_fillin_cb(ax25, dev);
ax25782net/ax25/af_ax25.cax25->source_addr = *src;
ax25783net/ax25/af_ax25.cax25->dest_addr   = *dest;
ax25786net/ax25/af_ax25.cif ((ax25->digipeat = kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL) {
ax25787net/ax25/af_ax25.ckfree_s(ax25, sizeof(ax25));
ax25790net/ax25/af_ax25.c*ax25->digipeat = *digi;
ax25792net/ax25/af_ax25.cax25_rt_build_path(ax25, dest);
ax25795net/ax25/af_ax25.cif (ax25_dev_is_dama_slave(ax25->device))  /* dl1bke 960116 */
ax25796net/ax25/af_ax25.cdama_establish_data_link(ax25);
ax25798net/ax25/af_ax25.cax25_establish_data_link(ax25);
ax25802net/ax25/af_ax25.cax25->idletimer = ax25->idle = ax25_dev_get_value(ax25->device, AX25_VALUES_IDLE);
ax25804net/ax25/af_ax25.cax25_insert_socket(ax25);
ax25806net/ax25/af_ax25.cax25->state = AX25_STATE_1;
ax25808net/ax25/af_ax25.cax25_set_timer(ax25);
ax25810net/ax25/af_ax25.cax25_output(ax25, skb);
ax25882net/ax25/af_ax25.cif (sk->ax25->modulus == MODULUS) {
ax25889net/ax25/af_ax25.csk->ax25->window = opt;
ax25895net/ax25/af_ax25.csk->ax25->rtt = (opt * PR_SLOWHZ) / 2;
ax25901net/ax25/af_ax25.csk->ax25->t2 = opt * PR_SLOWHZ;
ax25907net/ax25/af_ax25.csk->ax25->n2 = opt;
ax25913net/ax25/af_ax25.csk->ax25->t3 = opt * PR_SLOWHZ;
ax25919net/ax25/af_ax25.csk->ax25->idle = opt * PR_SLOWHZ * 60;
ax25923net/ax25/af_ax25.csk->ax25->backoff = opt ? 1 : 0;
ax25927net/ax25/af_ax25.csk->ax25->modulus = opt ? EMODULUS : MODULUS;
ax25931net/ax25/af_ax25.csk->ax25->hdrincl = opt ? 1 : 0;
ax25937net/ax25/af_ax25.csk->ax25->paclen = opt;
ax25962net/ax25/af_ax25.cval = sk->ax25->window;
ax25966net/ax25/af_ax25.cval = (sk->ax25->t1 * 2) / PR_SLOWHZ;
ax25970net/ax25/af_ax25.cval = sk->ax25->t2 / PR_SLOWHZ;
ax25974net/ax25/af_ax25.cval = sk->ax25->n2;
ax25978net/ax25/af_ax25.cval = sk->ax25->t3 / PR_SLOWHZ;
ax25982net/ax25/af_ax25.cval = sk->ax25->idle / (PR_SLOWHZ * 60);
ax25986net/ax25/af_ax25.cval = sk->ax25->backoff;
ax25990net/ax25/af_ax25.cval = (sk->ax25->modulus == EMODULUS);
ax25994net/ax25/af_ax25.cval = sk->ax25->hdrincl;
ax25998net/ax25/af_ax25.cval = sk->ax25->paclen;
ax251046net/ax25/af_ax25.cax25_cb *ax25;
ax251081net/ax25/af_ax25.cif ((ax25 = ax25_create_cb()) == NULL) {
ax251125net/ax25/af_ax25.cax25->sk = sk;
ax251126net/ax25/af_ax25.csk->ax25 = ax25;
ax251134net/ax25/af_ax25.cax25_cb *ax25;
ax251139net/ax25/af_ax25.cif ((ax25 = ax25_create_cb()) == NULL) {
ax251144net/ax25/af_ax25.cax25_fillin_cb(ax25, dev);
ax251156net/ax25/af_ax25.ckfree_s((void *)ax25, sizeof(*ax25));
ax251193net/ax25/af_ax25.cax25->modulus = osk->ax25->modulus;
ax251194net/ax25/af_ax25.cax25->backoff = osk->ax25->backoff;
ax251195net/ax25/af_ax25.cax25->hdrincl = osk->ax25->hdrincl;
ax251196net/ax25/af_ax25.cax25->rtt     = osk->ax25->rtt;
ax251197net/ax25/af_ax25.cax25->t1      = osk->ax25->t1;
ax251198net/ax25/af_ax25.cax25->t2      = osk->ax25->t2;
ax251199net/ax25/af_ax25.cax25->t3      = osk->ax25->t3;
ax251200net/ax25/af_ax25.cax25->n2      = osk->ax25->n2;
ax251201net/ax25/af_ax25.cax25->idle    = osk->ax25->idle;
ax251203net/ax25/af_ax25.cax25->window  = osk->ax25->window;
ax251205net/ax25/af_ax25.cax25->source_addr = osk->ax25->source_addr;
ax251207net/ax25/af_ax25.cif (osk->ax25->digipeat != NULL) {
ax251208net/ax25/af_ax25.cif ((ax25->digipeat = (ax25_digi *)kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL) {
ax251210net/ax25/af_ax25.ckfree_s(ax25, sizeof(*ax25));
ax251215net/ax25/af_ax25.c*ax25->digipeat = *osk->ax25->digipeat;
ax251218net/ax25/af_ax25.csk->ax25 = ax25;
ax251219net/ax25/af_ax25.cax25->sk = sk;
ax251238net/ax25/af_ax25.cswitch (sk->ax25->state) {
ax251243net/ax25/af_ax25.cax25_destroy_socket(sk->ax25);
ax251247net/ax25/af_ax25.cax25_send_control(sk->ax25, DISC, POLLON, C_COMMAND);
ax251248net/ax25/af_ax25.csk->ax25->state = AX25_STATE_0;
ax251252net/ax25/af_ax25.cax25_destroy_socket(sk->ax25);
ax251256net/ax25/af_ax25.cif (sk->ax25->dama_slave)
ax251257net/ax25/af_ax25.cax25_send_control(sk->ax25, DISC, POLLON, C_COMMAND);
ax251259net/ax25/af_ax25.cax25_send_control(sk->ax25, DM, POLLON, C_RESPONSE);
ax251260net/ax25/af_ax25.csk->ax25->state = AX25_STATE_0;
ax251264net/ax25/af_ax25.cax25_destroy_socket(sk->ax25);
ax251269net/ax25/af_ax25.cax25_clear_queues(sk->ax25);
ax251270net/ax25/af_ax25.csk->ax25->n2count = 0;
ax251271net/ax25/af_ax25.cif (!sk->ax25->dama_slave)
ax251272net/ax25/af_ax25.cax25_send_control(sk->ax25, DISC, POLLON, C_COMMAND);
ax251273net/ax25/af_ax25.csk->ax25->t3timer = 0;
ax251274net/ax25/af_ax25.csk->ax25->t1timer = sk->ax25->t1 = ax25_calculate_t1(sk->ax25);
ax251275net/ax25/af_ax25.csk->ax25->state   = AX25_STATE_2;
ax251289net/ax25/af_ax25.cax25_destroy_socket(sk->ax25);
ax251324net/ax25/af_ax25.csk->ax25->source_addr = addr->fsa_ax25.sax25_call;
ax251326net/ax25/af_ax25.csk->ax25->source_addr = *call;
ax251329net/ax25/af_ax25.cprintk("AX25: source address set to %s\n", ax2asc(&sk->ax25->source_addr));
ax251355net/ax25/af_ax25.cax25_fillin_cb(sk->ax25, dev);
ax251356net/ax25/af_ax25.cax25_insert_socket(sk->ax25);
ax251403net/ax25/af_ax25.cif (sk->ax25->digipeat == NULL) {
ax251404net/ax25/af_ax25.cif ((sk->ax25->digipeat = (ax25_digi *)kmalloc(sizeof(ax25_digi), GFP_KERNEL)) == NULL)
ax251408net/ax25/af_ax25.csk->ax25->digipeat->ndigi = addr->sax25_ndigis;
ax251411net/ax25/af_ax25.csk->ax25->digipeat->repeated[ct] = 0;
ax251412net/ax25/af_ax25.csk->ax25->digipeat->calls[ct] = fsa->fsa_digipeater[ct];
ax251416net/ax25/af_ax25.csk->ax25->digipeat->lastrepeat = 0;
ax251420net/ax25/af_ax25.cax25_rt_build_path(sk->ax25, &addr->sax25_call);
ax251429net/ax25/af_ax25.cif ((err = ax25_rt_autobind(sk->ax25, &addr->sax25_call)) < 0)
ax251431net/ax25/af_ax25.cax25_fillin_cb(sk->ax25, sk->ax25->device);
ax251432net/ax25/af_ax25.cax25_insert_socket(sk->ax25);
ax251434net/ax25/af_ax25.cif (sk->ax25->device == NULL)
ax251438net/ax25/af_ax25.cif (sk->type == SOCK_SEQPACKET && ax25_find_cb(&sk->ax25->source_addr, &addr->sax25_call, sk->ax25->device) != NULL)
ax251441net/ax25/af_ax25.csk->ax25->dest_addr = addr->sax25_call;
ax251454net/ax25/af_ax25.cif (ax25_dev_is_dama_slave(sk->ax25->device))
ax251455net/ax25/af_ax25.cdama_establish_data_link(sk->ax25);
ax251457net/ax25/af_ax25.cax25_establish_data_link(sk->ax25);
ax251459net/ax25/af_ax25.csk->ax25->state     = AX25_STATE_1;
ax251460net/ax25/af_ax25.cax25_set_timer(sk->ax25);    /* Start going SABM SABM until a UA or a give up and DM */
ax251561net/ax25/af_ax25.caddr = &sk->ax25->dest_addr;
ax251563net/ax25/af_ax25.caddr = &sk->ax25->source_addr;
ax251572net/ax25/af_ax25.cif (sk->ax25->digipeat != NULL) {
ax251573net/ax25/af_ax25.cndigi = sk->ax25->digipeat->ndigi;
ax251577net/ax25/af_ax25.csax->fsa_digipeater[i] = sk->ax25->digipeat->calls[i];
ax251589net/ax25/af_ax25.cax25_cb *ax25;
ax251761net/ax25/af_ax25.cif ((ax25 = ax25_find_cb(&dest, &src, dev)) != NULL) {
ax251768net/ax25/af_ax25.cif (ax25_process_rx_frame(ax25, skb, type, dama) == 0)
ax251802net/ax25/af_ax25.cax25 = make->ax25;
ax251820net/ax25/af_ax25.cif ((ax25 = ax25_create_cb()) == NULL) {
ax251826net/ax25/af_ax25.cax25_fillin_cb(ax25, dev);
ax251827net/ax25/af_ax25.cax25->idletimer = ax25->idle = ax25_dev_get_value(ax25->device, AX25_VALUES_IDLE);
ax251839net/ax25/af_ax25.cax25->source_addr = dest;
ax251840net/ax25/af_ax25.cax25->dest_addr   = src;
ax251845net/ax25/af_ax25.cif (dp.ndigi != 0 && ax25->digipeat == NULL && (ax25->digipeat = kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL) {
ax251847net/ax25/af_ax25.cax25_destroy_socket(ax25);
ax251852net/ax25/af_ax25.cif (ax25->digipeat != NULL) {
ax251853net/ax25/af_ax25.ckfree_s(ax25->digipeat, sizeof(ax25_digi));
ax251854net/ax25/af_ax25.cax25->digipeat = NULL;
ax251858net/ax25/af_ax25.cax25_digi_invert(&dp, ax25->digipeat);
ax251862net/ax25/af_ax25.cax25->modulus = EMODULUS;
ax251863net/ax25/af_ax25.cax25->window  = ax25_dev_get_value(dev, AX25_VALUES_EWINDOW);
ax251865net/ax25/af_ax25.cax25->modulus = MODULUS;
ax251866net/ax25/af_ax25.cax25->window  = ax25_dev_get_value(dev, AX25_VALUES_WINDOW);
ax251869net/ax25/af_ax25.cax25->device = dev;
ax251871net/ax25/af_ax25.cax25_send_control(ax25, UA, POLLON, C_RESPONSE);
ax251873net/ax25/af_ax25.cif (dama) ax25_dama_on(ax25);  /* bke 951121 */
ax251875net/ax25/af_ax25.cax25->dama_slave = dama;
ax251876net/ax25/af_ax25.cax25->t3timer = ax25->t3;
ax251877net/ax25/af_ax25.cax25->state   = AX25_STATE_3;
ax251879net/ax25/af_ax25.cax25_insert_socket(ax25);
ax251881net/ax25/af_ax25.cax25_set_timer(ax25);
ax251959net/ax25/af_ax25.cif (sk->ax25->device == NULL)
ax251987net/ax25/af_ax25.cif (sk->type == SOCK_SEQPACKET && ax25cmp(&sk->ax25->dest_addr, &sax.sax25_call) != 0)
ax251997net/ax25/af_ax25.csax.sax25_call   = sk->ax25->dest_addr;
ax251998net/ax25/af_ax25.cdp = sk->ax25->digipeat;
ax252040net/ax25/af_ax25.cax25_output(sk->ax25, skb);  /* Shove it onto the queue and kick */
ax252053net/ax25/af_ax25.casmptr += (lv = build_ax25_addr(asmptr, &sk->ax25->source_addr, &sax.sax25_call, dp, C_COMMAND, MODULUS));
ax252066net/ax25/af_ax25.cax25_queue_xmit(skb, sk->ax25->device, SOPRI_NORMAL);
ax252100net/ax25/af_ax25.cif (sk->ax25->hdrincl) {
ax252270net/ax25/af_ax25.cax25_cb *ax25;
ax252282net/ax25/af_ax25.cfor (ax25 = ax25_list; ax25 != NULL; ax25 = ax25->next) {
ax252283net/ax25/af_ax25.cif ((dev = ax25->device) == NULL)
ax252288net/ax25/af_ax25.cidletimer = ax25->idletimer / (PR_SLOWHZ * 60);
ax252289net/ax25/af_ax25.cidletimer += (ax25->idletimer && ax25->idletimer < ax25->idle)? 1:0;
ax252292net/ax25/af_ax25.cax2asc(&ax25->dest_addr));
ax252294net/ax25/af_ax25.cax2asc(&ax25->source_addr), devname,
ax252295net/ax25/af_ax25.cax25->state,
ax252296net/ax25/af_ax25.cax25->vs, ax25->vr, ax25->va,
ax252297net/ax25/af_ax25.cax25->t1timer / PR_SLOWHZ,
ax252298net/ax25/af_ax25.cax25->t1      / PR_SLOWHZ,
ax252299net/ax25/af_ax25.cax25->t2timer / PR_SLOWHZ,
ax252300net/ax25/af_ax25.cax25->t2      / PR_SLOWHZ,
ax252301net/ax25/af_ax25.cax25->t3timer / PR_SLOWHZ,
ax252302net/ax25/af_ax25.cax25->t3      / PR_SLOWHZ,
ax252304net/ax25/af_ax25.cax25->idle      / (PR_SLOWHZ*60),
ax252305net/ax25/af_ax25.cax25->n2count, ax25->n2,
ax252306net/ax25/af_ax25.cax25->rtt     / PR_SLOWHZ,
ax252307net/ax25/af_ax25.cax25->window,
ax252308net/ax25/af_ax25.cax25->paclen);
ax252310net/ax25/af_ax25.clen += sprintf(buffer + len, " %s", ax25->dama_slave? " slave" : "    no");
ax252312net/ax25/af_ax25.cif (ax25->sk != NULL) {
ax252314net/ax25/af_ax25.cax25->sk->wmem_alloc,
ax252315net/ax25/af_ax25.cax25->sk->rmem_alloc);
ax2570net/ax25/ax25_in.cstatic int ax25_rx_fragment(ax25_cb *ax25, struct sk_buff *skb)
ax2575net/ax25/ax25_in.cif (ax25->fragno != 0) {
ax2577net/ax25/ax25_in.cif ((ax25->fragno - 1) == (*skb->data & SEG_REM)) {
ax2581net/ax25/ax25_in.cax25->fragno = *skb->data & SEG_REM;
ax2583net/ax25/ax25_in.cax25->fraglen += skb->len;
ax2584net/ax25/ax25_in.cskb_queue_tail(&ax25->frag_queue, skb);
ax2588net/ax25/ax25_in.cif (ax25->fragno == 0) {
ax2589net/ax25/ax25_in.cif ((skbn = alloc_skb(AX25_MAX_HEADER_LEN + ax25->fraglen, GFP_ATOMIC)) == NULL)
ax2596net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax2597net/ax25/ax25_in.cskbn->sk = ax25->sk;
ax2598net/ax25/ax25_in.catomic_add(skbn->truesize, &ax25->sk->rmem_alloc);
ax25103net/ax25/ax25_in.cskbo = skb_dequeue(&ax25->frag_queue);
ax25119net/ax25/ax25_in.cwhile ((skbo = skb_dequeue(&ax25->frag_queue)) != NULL) {
ax25124net/ax25/ax25_in.cax25->fraglen = 0;    /* reset counter */
ax25134net/ax25/ax25_in.cif (ax25_rx_iframe(ax25, skbn) == 0)
ax25145net/ax25/ax25_in.cax25->fragno = *skb->data & SEG_REM;
ax25147net/ax25/ax25_in.cax25->fraglen = skb->len;
ax25148net/ax25/ax25_in.cskb_queue_tail(&ax25->frag_queue, skb);
ax25160net/ax25/ax25_in.cstatic int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb)
ax25172net/ax25/ax25_in.cax25->idletimer = ax25->idle = ax25_dev_get_value(ax25->device, AX25_VALUES_IDLE);
ax25173net/ax25/ax25_in.cif (ax25_dev_get_value(ax25->device, AX25_VALUES_NETROM)) {
ax25175net/ax25/ax25_in.cqueued = nr_route_frame(skb, ax25);
ax25181net/ax25/ax25_in.cax25->idletimer = ax25->idle = ax25_dev_get_value(ax25->device, AX25_VALUES_IDLE);
ax25184net/ax25/ax25_in.cax25_ip_mode_set(&ax25->dest_addr, ax25->device, 'V');
ax25185net/ax25/ax25_in.cip_rcv(skb, ax25->device, NULL);  /* Wrong ptype */
ax25191net/ax25/ax25_in.cax25->idletimer = ax25->idle = ax25_dev_get_value(ax25->device, AX25_VALUES_IDLE);
ax25193net/ax25/ax25_in.cqueued = ax25_rx_fragment(ax25, skb);
ax25197net/ax25/ax25_in.cax25->idletimer = ax25->idle = 0;
ax25198net/ax25/ax25_in.cif (ax25->sk != NULL && ax25_dev_get_value(ax25->device, AX25_VALUES_TEXT) && ax25->sk->protocol == pid) {
ax25199net/ax25/ax25_in.cif (sock_queue_rcv_skb(ax25->sk, skb) == 0) {
ax25202net/ax25/ax25_in.cax25->condition |= OWN_RX_BUSY_CONDITION;
ax25216net/ax25/ax25_in.cstatic int ax25_state1_machine(ax25_cb *ax25, struct sk_buff *skb, int frametype, int pf, int type, int dama)
ax25220net/ax25/ax25_in.cax25->modulus = MODULUS;
ax25221net/ax25/ax25_in.cax25->window  = ax25_dev_get_value(ax25->device, AX25_VALUES_WINDOW);
ax25222net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25226net/ax25/ax25_in.cax25->modulus = EMODULUS;
ax25227net/ax25/ax25_in.cax25->window  = ax25_dev_get_value(ax25->device, AX25_VALUES_EWINDOW);
ax25228net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25232net/ax25/ax25_in.cax25_send_control(ax25, DM, pf, C_RESPONSE);
ax25237net/ax25/ax25_in.cif (dama) ax25_dama_on(ax25); /* bke */
ax25239net/ax25/ax25_in.cax25_calculate_rtt(ax25);
ax25240net/ax25/ax25_in.cax25->t1timer = 0;
ax25241net/ax25/ax25_in.cax25->t3timer = ax25->t3;
ax25242net/ax25/ax25_in.cax25->idletimer = ax25->idle;
ax25243net/ax25/ax25_in.cax25->vs      = 0;
ax25244net/ax25/ax25_in.cax25->va      = 0;
ax25245net/ax25/ax25_in.cax25->vr      = 0;
ax25246net/ax25/ax25_in.cax25->state   = AX25_STATE_3;
ax25247net/ax25/ax25_in.cax25->n2count = 0;
ax25248net/ax25/ax25_in.cax25->dama_slave = dama;  /* bke */
ax25250net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax25251net/ax25/ax25_in.cax25->sk->state = TCP_ESTABLISHED;
ax25253net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25254net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25261net/ax25/ax25_in.cif (ax25->modulus == MODULUS) {
ax25262net/ax25/ax25_in.cax25_clear_queues(ax25);
ax25263net/ax25/ax25_in.cax25->state = AX25_STATE_0;
ax25264net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax25265net/ax25/ax25_in.cax25->sk->state = TCP_CLOSE;
ax25266net/ax25/ax25_in.cax25->sk->err   = ECONNREFUSED;
ax25267net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25268net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25269net/ax25/ax25_in.cax25->sk->dead  = 1;
ax25272net/ax25/ax25_in.cax25->modulus = MODULUS;
ax25273net/ax25/ax25_in.cax25->window  = ax25_dev_get_value(ax25->device, AX25_VALUES_WINDOW);
ax25280net/ax25/ax25_in.cax25_send_control(ax25, SABM, POLLON, C_COMMAND);
ax25292net/ax25/ax25_in.cstatic int ax25_state2_machine(ax25_cb *ax25, struct sk_buff *skb, int frametype, int pf, int type)
ax25297net/ax25/ax25_in.cax25_send_control(ax25, DM, pf, C_RESPONSE);
ax25298net/ax25/ax25_in.cif (ax25->dama_slave)
ax25299net/ax25/ax25_in.cax25_send_control(ax25, DISC, POLLON, C_COMMAND);
ax25303net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25304net/ax25/ax25_in.cif (ax25->dama_slave) {
ax25305net/ax25/ax25_in.cax25->state = AX25_STATE_0;
ax25306net/ax25/ax25_in.cax25_dama_off(ax25);
ax25308net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax25309net/ax25/ax25_in.cax25->sk->state = TCP_CLOSE;
ax25310net/ax25/ax25_in.cax25->sk->err   = 0;
ax25311net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25312net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25313net/ax25/ax25_in.cax25->sk->dead  = 1;
ax25320net/ax25/ax25_in.cax25->state = AX25_STATE_0;
ax25321net/ax25/ax25_in.cax25_dama_off(ax25);
ax25323net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax25324net/ax25/ax25_in.cax25->sk->state = TCP_CLOSE;
ax25325net/ax25/ax25_in.cax25->sk->err   = 0;
ax25326net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25327net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25328net/ax25/ax25_in.cax25->sk->dead  = 1;
ax25335net/ax25/ax25_in.cax25->state = AX25_STATE_0;
ax25336net/ax25/ax25_in.cax25_dama_off(ax25);
ax25338net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax25339net/ax25/ax25_in.cax25->sk->state = TCP_CLOSE;
ax25340net/ax25/ax25_in.cax25->sk->err   = 0;
ax25341net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25342net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25343net/ax25/ax25_in.cax25->sk->dead  = 1;
ax25353net/ax25/ax25_in.cif (ax25->dama_slave)
ax25354net/ax25/ax25_in.cax25_send_control(ax25, DISC, POLLON, C_COMMAND);
ax25356net/ax25/ax25_in.cax25_send_control(ax25, DM, POLLON, C_RESPONSE);
ax25372net/ax25/ax25_in.cstatic int ax25_state3_machine(ax25_cb *ax25, struct sk_buff *skb, int frametype, int ns, int nr, int pf, int type, int dama)
ax25378net/ax25/ax25_in.cif (dama) ax25_dama_on(ax25);
ax25380net/ax25/ax25_in.cax25->modulus   = MODULUS;
ax25381net/ax25/ax25_in.cax25->window    = ax25_dev_get_value(ax25->device, AX25_VALUES_WINDOW);
ax25382net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25383net/ax25/ax25_in.cax25->condition = 0x00;
ax25384net/ax25/ax25_in.cax25->t1timer   = 0;
ax25385net/ax25/ax25_in.cax25->t3timer   = ax25->t3;
ax25386net/ax25/ax25_in.cax25->idletimer = ax25->idle;
ax25387net/ax25/ax25_in.cax25->vs        = 0;
ax25388net/ax25/ax25_in.cax25->va        = 0;
ax25389net/ax25/ax25_in.cax25->vr        = 0;
ax25390net/ax25/ax25_in.cax25->dama_slave = dama;
ax25394net/ax25/ax25_in.cif (dama) ax25_dama_on(ax25);
ax25396net/ax25/ax25_in.cax25->modulus   = EMODULUS;
ax25397net/ax25/ax25_in.cax25->window    = ax25_dev_get_value(ax25->device, AX25_VALUES_EWINDOW);
ax25398net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25399net/ax25/ax25_in.cax25->condition = 0x00;
ax25400net/ax25/ax25_in.cax25->t1timer   = 0;
ax25401net/ax25/ax25_in.cax25->t3timer   = ax25->t3;
ax25402net/ax25/ax25_in.cax25->idletimer = ax25->idle;
ax25403net/ax25/ax25_in.cax25->vs        = 0;
ax25404net/ax25/ax25_in.cax25->va        = 0;
ax25405net/ax25/ax25_in.cax25->vr        = 0;
ax25406net/ax25/ax25_in.cax25->dama_slave = dama;
ax25410net/ax25/ax25_in.cax25_clear_queues(ax25);
ax25411net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25412net/ax25/ax25_in.cax25->t3timer = 0;
ax25413net/ax25/ax25_in.cax25->state   = AX25_STATE_0;
ax25414net/ax25/ax25_in.cax25_dama_off(ax25);
ax25416net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax25417net/ax25/ax25_in.cax25->sk->state = TCP_CLOSE;
ax25418net/ax25/ax25_in.cax25->sk->err   = 0;
ax25419net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25420net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25421net/ax25/ax25_in.cax25->sk->dead  = 1;
ax25426net/ax25/ax25_in.cax25_clear_queues(ax25);
ax25427net/ax25/ax25_in.cax25->t3timer = 0;
ax25428net/ax25/ax25_in.cax25->state   = AX25_STATE_0;
ax25429net/ax25/ax25_in.cax25_dama_off(ax25);
ax25430net/ax25/ax25_in.cif (ax25->sk) {
ax25431net/ax25/ax25_in.cax25->sk->state = TCP_CLOSE;
ax25432net/ax25/ax25_in.cax25->sk->err   = ECONNRESET;
ax25433net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25434net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25435net/ax25/ax25_in.cax25->sk->dead         = 1;
ax25440net/ax25/ax25_in.cax25->condition |= PEER_RX_BUSY_CONDITION;
ax25441net/ax25/ax25_in.cax25_check_need_response(ax25, type, pf);
ax25442net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25443net/ax25/ax25_in.cax25_check_iframes_acked(ax25, nr);
ax25444net/ax25/ax25_in.cdama_check_need_response(ax25, type, pf);
ax25446net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25447net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25452net/ax25/ax25_in.cax25->condition &= ~PEER_RX_BUSY_CONDITION;
ax25453net/ax25/ax25_in.cax25_check_need_response(ax25, type, pf);
ax25454net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25455net/ax25/ax25_in.cax25_check_iframes_acked(ax25, nr);
ax25456net/ax25/ax25_in.cdama_check_need_response(ax25, type, pf);
ax25458net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25459net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25464net/ax25/ax25_in.cax25->condition &= ~PEER_RX_BUSY_CONDITION;
ax25465net/ax25/ax25_in.cax25_check_need_response(ax25, type, pf);
ax25466net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25467net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25468net/ax25/ax25_in.cax25_calculate_rtt(ax25);
ax25469net/ax25/ax25_in.cax25->t1timer = 0;
ax25470net/ax25/ax25_in.cax25->t3timer = ax25->t3;
ax25471net/ax25/ax25_in.cax25_requeue_frames(ax25);
ax25472net/ax25/ax25_in.cdama_check_need_response(ax25, type, pf);
ax25474net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25475net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25484net/ax25/ax25_in.cif (!ax25_validate_nr(ax25, nr)) {
ax25485net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25486net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25489net/ax25/ax25_in.cif (ax25->condition & PEER_RX_BUSY_CONDITION) {
ax25490net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25492net/ax25/ax25_in.cax25_check_iframes_acked(ax25, nr);
ax25494net/ax25/ax25_in.cif (ax25->condition & OWN_RX_BUSY_CONDITION) {
ax25496net/ax25/ax25_in.cif (ax25->dama_slave)  /* dl1bke 960114 */
ax25497net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25499net/ax25/ax25_in.cax25_enquiry_response(ax25);
ax25503net/ax25/ax25_in.cif (ns == ax25->vr) {
ax25504net/ax25/ax25_in.cqueued = ax25_rx_iframe(ax25, skb);
ax25505net/ax25/ax25_in.cif (ax25->condition & OWN_RX_BUSY_CONDITION) {
ax25507net/ax25/ax25_in.cif (ax25->dama_slave)  /* dl1bke 960114 */
ax25508net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25510net/ax25/ax25_in.cax25_enquiry_response(ax25);
ax25514net/ax25/ax25_in.cax25->vr = (ax25->vr + 1) % ax25->modulus;
ax25515net/ax25/ax25_in.cax25->condition &= ~REJECT_CONDITION;
ax25517net/ax25/ax25_in.cif (ax25->dama_slave)  /* dl1bke 960114 */
ax25518net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25520net/ax25/ax25_in.cax25_enquiry_response(ax25);
ax25522net/ax25/ax25_in.cif (!(ax25->condition & ACK_PENDING_CONDITION)) {
ax25523net/ax25/ax25_in.cax25->t2timer = ax25->t2;
ax25524net/ax25/ax25_in.cax25->condition |= ACK_PENDING_CONDITION;
ax25528net/ax25/ax25_in.cif (ax25->condition & REJECT_CONDITION) {
ax25530net/ax25/ax25_in.cif (ax25->dama_slave)  /* dl1bke 960114 */
ax25531net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25533net/ax25/ax25_in.cax25_enquiry_response(ax25);
ax25536net/ax25/ax25_in.cax25->condition |= REJECT_CONDITION;
ax25537net/ax25/ax25_in.cif (ax25->dama_slave)    /* dl1bke 960114 */
ax25538net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25540net/ax25/ax25_in.cax25_send_control(ax25, REJ, pf, C_RESPONSE);
ax25541net/ax25/ax25_in.cax25->condition &= ~ACK_PENDING_CONDITION;
ax25548net/ax25/ax25_in.cax25_establish_data_link(ax25);
ax25549net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25564net/ax25/ax25_in.cstatic int ax25_state4_machine(ax25_cb *ax25, struct sk_buff *skb, int frametype, int ns, int nr, int pf, int type, int dama)
ax25570net/ax25/ax25_in.cif (dama) ax25_dama_on(ax25);
ax25572net/ax25/ax25_in.cax25->dama_slave = dama;
ax25573net/ax25/ax25_in.cax25->modulus   = MODULUS;
ax25574net/ax25/ax25_in.cax25->window    = ax25_dev_get_value(ax25->device, AX25_VALUES_WINDOW);
ax25575net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25576net/ax25/ax25_in.cax25->condition = 0x00;
ax25577net/ax25/ax25_in.cax25->t1timer   = 0;
ax25578net/ax25/ax25_in.cax25->t3timer   = ax25->t3;
ax25579net/ax25/ax25_in.cax25->idletimer = ax25->idle;
ax25580net/ax25/ax25_in.cax25->vs        = 0;
ax25581net/ax25/ax25_in.cax25->va        = 0;
ax25582net/ax25/ax25_in.cax25->vr        = 0;
ax25583net/ax25/ax25_in.cax25->state     = AX25_STATE_3;
ax25584net/ax25/ax25_in.cax25->n2count   = 0;
ax25588net/ax25/ax25_in.cif (dama) ax25_dama_on(ax25);
ax25590net/ax25/ax25_in.cax25->dama_slave = dama;
ax25591net/ax25/ax25_in.cax25->modulus   = EMODULUS;
ax25592net/ax25/ax25_in.cax25->window    = ax25_dev_get_value(ax25->device, AX25_VALUES_EWINDOW);
ax25593net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25594net/ax25/ax25_in.cax25->condition = 0x00;
ax25595net/ax25/ax25_in.cax25->t1timer   = 0;
ax25596net/ax25/ax25_in.cax25->t3timer   = ax25->t3;
ax25597net/ax25/ax25_in.cax25->idletimer = ax25->idle;
ax25598net/ax25/ax25_in.cax25->vs        = 0;
ax25599net/ax25/ax25_in.cax25->va        = 0;
ax25600net/ax25/ax25_in.cax25->vr        = 0;
ax25601net/ax25/ax25_in.cax25->state     = AX25_STATE_3;
ax25602net/ax25/ax25_in.cax25->n2count   = 0;
ax25606net/ax25/ax25_in.cax25_clear_queues(ax25);
ax25607net/ax25/ax25_in.cax25_send_control(ax25, UA, pf, C_RESPONSE);
ax25608net/ax25/ax25_in.cax25->t3timer = 0;
ax25609net/ax25/ax25_in.cax25->state   = AX25_STATE_0;
ax25610net/ax25/ax25_in.cax25_dama_off(ax25);
ax25612net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax25613net/ax25/ax25_in.cax25->sk->state = TCP_CLOSE;
ax25614net/ax25/ax25_in.cax25->sk->err   = 0;
ax25615net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25616net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25617net/ax25/ax25_in.cax25->sk->dead  = 1;
ax25622net/ax25/ax25_in.cax25_clear_queues(ax25);
ax25623net/ax25/ax25_in.cax25->t3timer = 0;
ax25624net/ax25/ax25_in.cax25->state   = AX25_STATE_0;
ax25625net/ax25/ax25_in.cax25_dama_off(ax25);
ax25627net/ax25/ax25_in.cif (ax25->sk != NULL) {
ax25628net/ax25/ax25_in.cax25->sk->state = TCP_CLOSE;
ax25629net/ax25/ax25_in.cax25->sk->err   = ECONNRESET;
ax25630net/ax25/ax25_in.cif (!ax25->sk->dead)
ax25631net/ax25/ax25_in.cax25->sk->state_change(ax25->sk);
ax25632net/ax25/ax25_in.cax25->sk->dead  = 1;
ax25637net/ax25/ax25_in.cax25->condition |= PEER_RX_BUSY_CONDITION;
ax25639net/ax25/ax25_in.cax25->t1timer = 0;
ax25640net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25641net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25642net/ax25/ax25_in.cif (ax25->vs == ax25->va) {
ax25643net/ax25/ax25_in.cax25->t3timer = ax25->t3;
ax25644net/ax25/ax25_in.cax25->n2count = 0;
ax25645net/ax25/ax25_in.cax25->state   = AX25_STATE_3;
ax25648net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25649net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25654net/ax25/ax25_in.cax25_check_need_response(ax25, type, pf);
ax25655net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25656net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25657net/ax25/ax25_in.cdama_check_need_response(ax25, type, pf);
ax25659net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25660net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25665net/ax25/ax25_in.cax25->condition &= ~PEER_RX_BUSY_CONDITION;
ax25666net/ax25/ax25_in.cif ( pf && (type == C_RESPONSE || (ax25->dama_slave && type == C_COMMAND)) ) {
ax25667net/ax25/ax25_in.cax25->t1timer = 0;
ax25668net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25669net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25670net/ax25/ax25_in.cif (ax25->vs == ax25->va) {
ax25671net/ax25/ax25_in.cax25->t3timer = ax25->t3;
ax25672net/ax25/ax25_in.cax25->n2count = 0;
ax25673net/ax25/ax25_in.cax25->state   = AX25_STATE_3;
ax25675net/ax25/ax25_in.cax25_requeue_frames(ax25);
ax25677net/ax25/ax25_in.cdama_check_need_response(ax25, type, pf);
ax25679net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25680net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25685net/ax25/ax25_in.cax25_check_need_response(ax25, type, pf);
ax25686net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25687net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25688net/ax25/ax25_in.cdama_check_need_response(ax25, type, pf);
ax25690net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25691net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25696net/ax25/ax25_in.cax25->condition &= ~PEER_RX_BUSY_CONDITION;
ax25697net/ax25/ax25_in.cif ( pf && (type == C_RESPONSE || (ax25->dama_slave && type == C_COMMAND)) ) {
ax25698net/ax25/ax25_in.cax25->t1timer = 0;
ax25699net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25700net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25701net/ax25/ax25_in.cif (ax25->vs == ax25->va) {
ax25702net/ax25/ax25_in.cax25->t3timer = ax25->t3;
ax25703net/ax25/ax25_in.cax25->n2count = 0;
ax25704net/ax25/ax25_in.cax25->state   = AX25_STATE_3;
ax25706net/ax25/ax25_in.cax25_requeue_frames(ax25);
ax25708net/ax25/ax25_in.cdama_check_need_response(ax25, type, pf);
ax25710net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25711net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25716net/ax25/ax25_in.cax25_check_need_response(ax25, type, pf);  
ax25717net/ax25/ax25_in.cif (ax25_validate_nr(ax25, nr)) {
ax25718net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25719net/ax25/ax25_in.cif(ax25->vs != ax25->va) {
ax25720net/ax25/ax25_in.cax25_requeue_frames(ax25);
ax25722net/ax25/ax25_in.cdama_check_need_response(ax25, type, pf);
ax25724net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25725net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25734net/ax25/ax25_in.cif (!ax25_validate_nr(ax25, nr)) {
ax25735net/ax25/ax25_in.cax25_nr_error_recovery(ax25);
ax25736net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25739net/ax25/ax25_in.cax25_frames_acked(ax25, nr);
ax25740net/ax25/ax25_in.cif (ax25->condition & OWN_RX_BUSY_CONDITION) {
ax25742net/ax25/ax25_in.cif (ax25->dama_slave)
ax25743net/ax25/ax25_in.cax25_enquiry_response(ax25);
ax25745net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25749net/ax25/ax25_in.cif (ns == ax25->vr) {
ax25750net/ax25/ax25_in.cqueued = ax25_rx_iframe(ax25, skb);
ax25751net/ax25/ax25_in.cif (ax25->condition & OWN_RX_BUSY_CONDITION) {
ax25753net/ax25/ax25_in.cif (ax25->dama_slave)
ax25754net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25756net/ax25/ax25_in.cax25_enquiry_response(ax25);
ax25760net/ax25/ax25_in.cax25->vr = (ax25->vr + 1) % ax25->modulus;
ax25761net/ax25/ax25_in.cax25->condition &= ~REJECT_CONDITION;
ax25763net/ax25/ax25_in.cif (ax25->dama_slave)   /* dl1bke 960114 */
ax25764net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25766net/ax25/ax25_in.cax25_enquiry_response(ax25);
ax25768net/ax25/ax25_in.cif (!(ax25->condition & ACK_PENDING_CONDITION)) {
ax25769net/ax25/ax25_in.cax25->t2timer = ax25->t2;
ax25770net/ax25/ax25_in.cax25->condition |= ACK_PENDING_CONDITION;
ax25774net/ax25/ax25_in.cif (ax25->condition & REJECT_CONDITION) {
ax25776net/ax25/ax25_in.cif (ax25->dama_slave)
ax25777net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25779net/ax25/ax25_in.cax25_enquiry_response(ax25);
ax25782net/ax25/ax25_in.cax25->condition |= REJECT_CONDITION;
ax25783net/ax25/ax25_in.cif (ax25->dama_slave)    /* dl1bke 960114 */
ax25784net/ax25/ax25_in.cdama_enquiry_response(ax25);
ax25786net/ax25/ax25_in.cax25_send_control(ax25, REJ, pf, C_RESPONSE);
ax25787net/ax25/ax25_in.cax25->condition &= ~ACK_PENDING_CONDITION;
ax25794net/ax25/ax25_in.cax25_establish_data_link(ax25);
ax25795net/ax25/ax25_in.cax25->state = AX25_STATE_1;
ax25808net/ax25/ax25_in.cint ax25_process_rx_frame(ax25_cb *ax25, struct sk_buff *skb, int type, int dama)
ax25812net/ax25/ax25_in.cif (ax25->sk != NULL && ax25->state == AX25_STATE_0 && ax25->sk->dead)
ax25815net/ax25/ax25_in.cif (ax25->state != AX25_STATE_1 && ax25->state != AX25_STATE_2 &&
ax25816net/ax25/ax25_in.cax25->state != AX25_STATE_3 && ax25->state != AX25_STATE_4) {
ax25817net/ax25/ax25_in.cprintk("ax25_process_rx_frame: frame received - state = %d\n", ax25->state);
ax25821net/ax25/ax25_in.cdel_timer(&ax25->timer);
ax25823net/ax25/ax25_in.cframetype = ax25_decode(ax25, skb, &ns, &nr, &pf);
ax25825net/ax25/ax25_in.cswitch (ax25->state) {
ax25827net/ax25/ax25_in.cqueued = ax25_state1_machine(ax25, skb, frametype, pf, type, dama);
ax25830net/ax25/ax25_in.cqueued = ax25_state2_machine(ax25, skb, frametype, pf, type);
ax25833net/ax25/ax25_in.cqueued = ax25_state3_machine(ax25, skb, frametype, ns, nr, pf, type, dama);
ax25836net/ax25/ax25_in.cqueued = ax25_state4_machine(ax25, skb, frametype, ns, nr, pf, type, dama);
ax25840net/ax25/ax25_in.cax25_set_timer(ax25);
ax2560net/ax25/ax25_out.cvoid ax25_output(ax25_cb *ax25, struct sk_buff *skb)
ax2574net/ax25/ax25_out.cmtu = ax25->paclen;
ax25135net/ax25/ax25_out.cskb_queue_tail(&ax25->write_queue, skbn); /* Throw it on the queue */
ax25141net/ax25/ax25_out.cskb_queue_tail(&ax25->write_queue, skb);    /* Throw it on the queue */
ax25144net/ax25/ax25_out.cif (ax25->state == AX25_STATE_3 || ax25->state == AX25_STATE_4) {
ax25145net/ax25/ax25_out.cif (!ax25->dama_slave)    /* bke 960114: we aren't allowed to transmit */
ax25146net/ax25/ax25_out.cax25_kick(ax25);  /* in DAMA mode unless we received a Poll */
ax25154net/ax25/ax25_out.cstatic void ax25_send_iframe(ax25_cb *ax25, struct sk_buff *skb, int poll_bit)
ax25161net/ax25/ax25_out.cif (ax25->modulus == MODULUS) {
ax25166net/ax25/ax25_out.c*frame |= (ax25->vr << 5);
ax25167net/ax25/ax25_out.c*frame |= (ax25->vs << 1);
ax25172net/ax25/ax25_out.cframe[0] |= (ax25->vs << 1);
ax25174net/ax25/ax25_out.cframe[1] |= (ax25->vr << 1);
ax25177net/ax25/ax25_out.cax25_transmit_buffer(ax25, skb, C_COMMAND);  
ax25180net/ax25/ax25_out.cvoid ax25_kick(ax25_cb *ax25)
ax25186net/ax25/ax25_out.cdel_timer(&ax25->timer);
ax25188net/ax25/ax25_out.cstart = (skb_peek(&ax25->ack_queue) == NULL) ? ax25->va : ax25->vs;
ax25189net/ax25/ax25_out.cend   = (ax25->va + ax25->window) % ax25->modulus;
ax25191net/ax25/ax25_out.cif (!(ax25->condition & PEER_RX_BUSY_CONDITION) &&
ax25193net/ax25/ax25_out.cskb_peek(&ax25->write_queue) != NULL) {
ax25195net/ax25/ax25_out.cax25->vs = start;
ax25206net/ax25/ax25_out.cskb  = skb_dequeue(&ax25->write_queue);
ax25210net/ax25/ax25_out.cskb_queue_head(&ax25->write_queue, skb);
ax25214net/ax25/ax25_out.cnext = (ax25->vs + 1) % ax25->modulus;
ax25216net/ax25/ax25_out.clast = (next == end) || skb_peek(&ax25->write_queue) == NULL;
ax25225net/ax25/ax25_out.cax25_send_iframe(ax25, skbn, (last && !ax25->dama_slave) ? POLLON : POLLOFF);
ax25227net/ax25/ax25_out.cax25->vs = next;
ax25232net/ax25/ax25_out.cskb_queue_tail(&ax25->ack_queue, skb);
ax25236net/ax25/ax25_out.c} while (!last && (skb = skb_dequeue(&ax25->write_queue)) != NULL);
ax25238net/ax25/ax25_out.cax25->condition &= ~ACK_PENDING_CONDITION;
ax25240net/ax25/ax25_out.cif (ax25->t1timer == 0) {
ax25241net/ax25/ax25_out.cax25->t3timer = 0;
ax25242net/ax25/ax25_out.cax25->t1timer = ax25->t1 = ax25_calculate_t1(ax25);
ax25246net/ax25/ax25_out.cax25_set_timer(ax25);
ax25249net/ax25/ax25_out.cvoid ax25_transmit_buffer(ax25_cb *ax25, struct sk_buff *skb, int type)
ax25253net/ax25/ax25_out.cif (ax25->device == NULL) {
ax25254net/ax25/ax25_out.cif (ax25->sk != NULL) {
ax25255net/ax25/ax25_out.cax25->sk->state = TCP_CLOSE;
ax25256net/ax25/ax25_out.cax25->sk->err   = ENETUNREACH;
ax25257net/ax25/ax25_out.cif (!ax25->sk->dead)
ax25258net/ax25/ax25_out.cax25->sk->state_change(ax25->sk);
ax25259net/ax25/ax25_out.cax25->sk->dead  = 1;
ax25264net/ax25/ax25_out.cif (skb_headroom(skb) < size_ax25_addr(ax25->digipeat)) {
ax25271net/ax25/ax25_out.cptr = skb_push(skb, size_ax25_addr(ax25->digipeat));
ax25272net/ax25/ax25_out.cbuild_ax25_addr(ptr, &ax25->source_addr, &ax25->dest_addr, ax25->digipeat, type, ax25->modulus);
ax25276net/ax25/ax25_out.cax25_queue_xmit(skb, ax25->device, SOPRI_NORMAL);
ax25284net/ax25/ax25_out.cvoid ax25_nr_error_recovery(ax25_cb *ax25)
ax25286net/ax25/ax25_out.cax25_establish_data_link(ax25);
ax25289net/ax25/ax25_out.cvoid ax25_establish_data_link(ax25_cb *ax25)
ax25291net/ax25/ax25_out.cax25->condition = 0x00;
ax25292net/ax25/ax25_out.cax25->n2count   = 0;
ax25294net/ax25/ax25_out.cif (ax25->modulus == MODULUS) {
ax25295net/ax25/ax25_out.cax25_send_control(ax25, SABM, POLLON, C_COMMAND);
ax25297net/ax25/ax25_out.cax25_send_control(ax25, SABME, POLLON, C_COMMAND);
ax25300net/ax25/ax25_out.cax25->t3timer = 0;
ax25301net/ax25/ax25_out.cax25->t2timer = 0;
ax25302net/ax25/ax25_out.cax25->t1timer = ax25->t1 = ax25_calculate_t1(ax25);
ax25305net/ax25/ax25_out.cvoid ax25_transmit_enquiry(ax25_cb *ax25)
ax25307net/ax25/ax25_out.cif (ax25->condition & OWN_RX_BUSY_CONDITION)
ax25308net/ax25/ax25_out.cax25_send_control(ax25, RNR, POLLON, C_COMMAND);
ax25310net/ax25/ax25_out.cax25_send_control(ax25, RR, POLLON, C_COMMAND);
ax25312net/ax25/ax25_out.cax25->condition &= ~ACK_PENDING_CONDITION;
ax25314net/ax25/ax25_out.cax25->t1timer = ax25->t1 = ax25_calculate_t1(ax25);
ax25317net/ax25/ax25_out.cvoid ax25_enquiry_response(ax25_cb *ax25)
ax25319net/ax25/ax25_out.cif (ax25->condition & OWN_RX_BUSY_CONDITION)
ax25320net/ax25/ax25_out.cax25_send_control(ax25, RNR, POLLON, C_RESPONSE);
ax25322net/ax25/ax25_out.cax25_send_control(ax25, RR, POLLON, C_RESPONSE);
ax25324net/ax25/ax25_out.cax25->condition &= ~ACK_PENDING_CONDITION;
ax25327net/ax25/ax25_out.cvoid ax25_timeout_response(ax25_cb *ax25)
ax25329net/ax25/ax25_out.cif (ax25->condition & OWN_RX_BUSY_CONDITION)
ax25330net/ax25/ax25_out.cax25_send_control(ax25, RNR, POLLOFF, C_RESPONSE);
ax25332net/ax25/ax25_out.cax25_send_control(ax25, RR, POLLOFF, C_RESPONSE);
ax25334net/ax25/ax25_out.cax25->condition &= ~ACK_PENDING_CONDITION;
ax25337net/ax25/ax25_out.cvoid ax25_check_iframes_acked(ax25_cb *ax25, unsigned short nr)
ax25339net/ax25/ax25_out.cif (ax25->vs == nr) {
ax25340net/ax25/ax25_out.cax25_frames_acked(ax25, nr);
ax25341net/ax25/ax25_out.cax25_calculate_rtt(ax25);
ax25342net/ax25/ax25_out.cax25->t1timer = 0;
ax25343net/ax25/ax25_out.cax25->t3timer = ax25->t3;
ax25345net/ax25/ax25_out.cif (ax25->va != nr) {
ax25346net/ax25/ax25_out.cax25_frames_acked(ax25, nr);
ax25347net/ax25/ax25_out.cax25->t1timer = ax25->t1 = ax25_calculate_t1(ax25);
ax25356net/ax25/ax25_out.cvoid ax25_check_need_response(ax25_cb *ax25, int type, int pf)
ax25358net/ax25/ax25_out.cif (!ax25->dama_slave && type == C_COMMAND && pf)
ax25359net/ax25/ax25_out.cax25_enquiry_response(ax25);
ax25365net/ax25/ax25_out.cvoid dama_enquiry_response(ax25_cb *ax25)
ax25369net/ax25/ax25_out.cif (!(ax25->condition & PEER_RX_BUSY_CONDITION)) {
ax25370net/ax25/ax25_out.cax25_requeue_frames(ax25);
ax25371net/ax25/ax25_out.cax25_kick(ax25);
ax25374net/ax25/ax25_out.cif (ax25->state == AX25_STATE_1 || ax25->state == AX25_STATE_2 ||
ax25375net/ax25/ax25_out.cskb_peek(&ax25->ack_queue) != NULL) {
ax25376net/ax25/ax25_out.cax25_t1_timeout(ax25);
ax25378net/ax25/ax25_out.cax25->n2count = 0;
ax25381net/ax25/ax25_out.cax25->t3timer = ax25->t3;
ax25391net/ax25/ax25_out.cif (ax25->condition & REJECT_CONDITION)
ax25392net/ax25/ax25_out.cax25_send_control(ax25, REJ, POLLOFF, C_RESPONSE);
ax25395net/ax25/ax25_out.cax25_enquiry_response(ax25);
ax25402net/ax25/ax25_out.cif (ax25o->device != ax25->device)
ax25429net/ax25/ax25_out.cvoid dama_check_need_response(ax25_cb *ax25, int type, int pf)
ax25431net/ax25/ax25_out.cif (ax25->dama_slave && type == C_COMMAND && pf)
ax25432net/ax25/ax25_out.cdama_enquiry_response(ax25);
ax25435net/ax25/ax25_out.cvoid dama_establish_data_link(ax25_cb *ax25)
ax25437net/ax25/ax25_out.cax25->condition = 0x00;
ax25438net/ax25/ax25_out.cax25->n2count   = 0;
ax25440net/ax25/ax25_out.cax25->t3timer = 0;
ax25441net/ax25/ax25_out.cax25->t2timer = 0;
ax25442net/ax25/ax25_out.cax25->t1timer = ax25->t1 = ax25_calculate_t1(ax25);
ax25528net/ax25/ax25_route.cint ax25_rt_autobind(ax25_cb *ax25, ax25_address *addr)
ax25539net/ax25/ax25_route.cif (ax25->device == NULL)
ax25541net/ax25/ax25_route.ccall = (ax25_address *)ax25->device->dev_addr;
ax25544net/ax25/ax25_route.cax25->source_addr = *call;
ax25547net/ax25/ax25_route.cif ((ax25->digipeat = kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL)
ax25549net/ax25/ax25_route.c*ax25->digipeat = *ax25_rt->digipeat;
ax25550net/ax25/ax25_route.cax25_adjust_path(addr, ax25->digipeat);
ax25553net/ax25/ax25_route.cif (ax25->sk != NULL)
ax25554net/ax25/ax25_route.cax25->sk->zapped = 0;
ax25563net/ax25/ax25_route.cvoid ax25_rt_build_path(ax25_cb *ax25, ax25_address *addr)
ax25572net/ax25/ax25_route.cif ((ax25->digipeat = kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL)
ax25575net/ax25/ax25_route.cax25->device = ax25_rt->dev;
ax25576net/ax25/ax25_route.c*ax25->digipeat = *ax25_rt->digipeat;
ax25577net/ax25/ax25_route.cax25_adjust_path(addr, ax25->digipeat);
ax2561net/ax25/ax25_subr.cvoid ax25_clear_queues(ax25_cb *ax25)
ax2565net/ax25/ax25_subr.cwhile ((skb = skb_dequeue(&ax25->write_queue)) != NULL) {
ax2570net/ax25/ax25_subr.cwhile ((skb = skb_dequeue(&ax25->ack_queue)) != NULL) {
ax2575net/ax25/ax25_subr.cwhile ((skb = skb_dequeue(&ax25->reseq_queue)) != NULL) {
ax2579net/ax25/ax25_subr.cwhile ((skb = skb_dequeue(&ax25->frag_queue)) != NULL) {
ax2589net/ax25/ax25_subr.cvoid ax25_frames_acked(ax25_cb *ax25, unsigned short nr)
ax2596net/ax25/ax25_subr.cif (ax25->va != nr) {
ax2597net/ax25/ax25_subr.cwhile (skb_peek(&ax25->ack_queue) != NULL && ax25->va != nr) {
ax2598net/ax25/ax25_subr.cskb = skb_dequeue(&ax25->ack_queue);
ax25101net/ax25/ax25_subr.cax25->va = (ax25->va + 1) % ax25->modulus;
ax25102net/ax25/ax25_subr.cif (ax25->dama_slave)    /* dl1bke 960120 */
ax25103net/ax25/ax25_subr.cax25->n2count = 0;
ax25112net/ax25/ax25_subr.cvoid ax25_requeue_frames(ax25_cb *ax25)
ax25121net/ax25/ax25_subr.cwhile ((skb = skb_dequeue(&ax25->ack_queue)) != NULL) {
ax25123net/ax25/ax25_subr.cskb_queue_head(&ax25->write_queue, skb);
ax25134net/ax25/ax25_subr.cint ax25_validate_nr(ax25_cb *ax25, unsigned short nr)
ax25136net/ax25/ax25_subr.cunsigned short vc = ax25->va;
ax25138net/ax25/ax25_subr.cwhile (vc != ax25->vs) {
ax25140net/ax25/ax25_subr.cvc = (vc + 1) % ax25->modulus;
ax25143net/ax25/ax25_subr.cif (nr == ax25->vs) return 1;
ax25152net/ax25/ax25_subr.cint ax25_decode(ax25_cb *ax25, struct sk_buff *skb, int *ns, int *nr, int *pf)
ax25160net/ax25/ax25_subr.cif (ax25->modulus == MODULUS) {
ax25202net/ax25/ax25_subr.cvoid ax25_send_control(ax25_cb *ax25, int frametype, int poll_bit, int type)
ax25208net/ax25/ax25_subr.cif ((dev = ax25->device) == NULL)
ax25211net/ax25/ax25_subr.cif ((skb = alloc_skb(AX25_BPQ_HEADER_LEN + size_ax25_addr(ax25->digipeat) + 2, GFP_ATOMIC)) == NULL)
ax25214net/ax25/ax25_subr.cskb_reserve(skb, AX25_BPQ_HEADER_LEN + size_ax25_addr(ax25->digipeat));
ax25216net/ax25/ax25_subr.cif (ax25->sk != NULL) {
ax25217net/ax25/ax25_subr.cskb->sk = ax25->sk;
ax25218net/ax25/ax25_subr.catomic_add(skb->truesize, &ax25->sk->wmem_alloc);
ax25222net/ax25/ax25_subr.cif (ax25->modulus == MODULUS) {
ax25227net/ax25/ax25_subr.c*dptr |= (ax25->vr << 5);
ax25236net/ax25/ax25_subr.cdptr[1] = (ax25->vr << 1);
ax25243net/ax25/ax25_subr.cax25_transmit_buffer(ax25, skb, type);
ax25288net/ax25/ax25_subr.cunsigned short ax25_calculate_t1(ax25_cb *ax25)
ax25292net/ax25/ax25_subr.cif (ax25->backoff) {
ax25293net/ax25/ax25_subr.cfor (n = 0; n < ax25->n2count; n++)
ax25299net/ax25/ax25_subr.creturn t * ax25->rtt;
ax25305net/ax25/ax25_subr.cvoid ax25_calculate_rtt(ax25_cb *ax25)
ax25307net/ax25/ax25_subr.cif (ax25->t1timer > 0 && ax25->n2count == 0)
ax25308net/ax25/ax25_subr.cax25->rtt = (9 * ax25->rtt + ax25->t1 - ax25->t1timer) / 10;
ax25312net/ax25/ax25_subr.cif (ax25->rtt < (AX25_T1CLAMPLO))
ax25313net/ax25/ax25_subr.cax25->rtt = (AX25_T1CLAMPLO);
ax25315net/ax25/ax25_subr.cif (ax25->rtt == 0)
ax25316net/ax25/ax25_subr.cax25->rtt = PR_SLOWHZ;
ax25320net/ax25/ax25_subr.cif (ax25->rtt > (AX25_T1CLAMPHI))
ax25321net/ax25/ax25_subr.cax25->rtt = (AX25_T1CLAMPHI);
ax25485net/ax25/ax25_subr.cvoid ax25_kiss_cmd(ax25_cb *ax25, unsigned char cmd, unsigned char param)
ax25490net/ax25/ax25_subr.cif (ax25->device == NULL)
ax25499net/ax25/ax25_subr.cif (ax25->sk != NULL) {
ax25500net/ax25/ax25_subr.cskb->sk = ax25->sk;
ax25501net/ax25/ax25_subr.catomic_add(skb->truesize, &ax25->sk->wmem_alloc);
ax25511net/ax25/ax25_subr.cdev_queue_xmit(skb, ax25->device, SOPRI_NORMAL);
ax25514net/ax25/ax25_subr.cvoid ax25_dama_on(ax25_cb *ax25)
ax25516net/ax25/ax25_subr.cif (ax25_dev_is_dama_slave(ax25->device) == 0) {
ax25517net/ax25/ax25_subr.cif (ax25->sk != NULL && ax25->sk->debug)
ax25519net/ax25/ax25_subr.cax25_kiss_cmd(ax25, 5, 1);
ax25523net/ax25/ax25_subr.cvoid ax25_dama_off(ax25_cb *ax25)
ax25525net/ax25/ax25_subr.cif (ax25->dama_slave == 0)
ax25528net/ax25/ax25_subr.cax25->dama_slave = 0;
ax25529net/ax25/ax25_subr.cif (ax25_dev_is_dama_slave(ax25->device) == 0) {
ax25530net/ax25/ax25_subr.cif (ax25->sk != NULL && ax25->sk->debug)
ax25532net/ax25/ax25_subr.cax25_kiss_cmd(ax25, 5, 0);
ax2554net/ax25/ax25_timer.cvoid ax25_set_timer(ax25_cb *ax25)
ax2560net/ax25/ax25_timer.cdel_timer(&ax25->timer);
ax2563net/ax25/ax25_timer.cax25->timer.next     = ax25->timer.prev = NULL;  
ax2564net/ax25/ax25_timer.cax25->timer.data     = (unsigned long)ax25;
ax2565net/ax25/ax25_timer.cax25->timer.function = &ax25_timer;
ax2567net/ax25/ax25_timer.cax25->timer.expires = jiffies + 10;
ax2568net/ax25/ax25_timer.cadd_timer(&ax25->timer);
ax2571net/ax25/ax25_timer.cstatic void ax25_reset_timer(ax25_cb *ax25)
ax2577net/ax25/ax25_timer.cdel_timer(&ax25->timer);
ax2580net/ax25/ax25_timer.cax25->timer.data     = (unsigned long)ax25;
ax2581net/ax25/ax25_timer.cax25->timer.function = &ax25_timer;
ax2582net/ax25/ax25_timer.cax25->timer.expires  = jiffies + 10;
ax2583net/ax25/ax25_timer.cadd_timer(&ax25->timer);
ax2594net/ax25/ax25_timer.cax25_cb *ax25 = (ax25_cb *)param;
ax2596net/ax25/ax25_timer.cswitch (ax25->state) {
ax25100net/ax25/ax25_timer.cif (ax25->sk == NULL || ax25->sk->destroy || (ax25->sk->state == TCP_LISTEN && ax25->sk->dead)) {
ax25101net/ax25/ax25_timer.cdel_timer(&ax25->timer);
ax25102net/ax25/ax25_timer.cax25_destroy_socket(ax25);
ax25112net/ax25/ax25_timer.cif (ax25->sk != NULL) {
ax25113net/ax25/ax25_timer.cif (ax25->sk->rmem_alloc < (ax25->sk->rcvbuf / 2) && (ax25->condition & OWN_RX_BUSY_CONDITION)) {
ax25114net/ax25/ax25_timer.cax25->condition &= ~OWN_RX_BUSY_CONDITION;
ax25115net/ax25/ax25_timer.cif (!ax25->dama_slave) /* dl1bke */
ax25116net/ax25/ax25_timer.cax25_send_control(ax25, RR, POLLOFF, C_RESPONSE);
ax25117net/ax25/ax25_timer.cax25->condition &= ~ACK_PENDING_CONDITION;
ax25124net/ax25/ax25_timer.cif (!ax25->dama_slave)
ax25125net/ax25/ax25_timer.cax25_kick(ax25);  /* dl1bke 960114 */
ax25132net/ax25/ax25_timer.cif (ax25->t2timer > 0 && --ax25->t2timer == 0) {
ax25133net/ax25/ax25_timer.cif (ax25->state == AX25_STATE_3 || ax25->state == AX25_STATE_4) {
ax25134net/ax25/ax25_timer.cif (ax25->condition & ACK_PENDING_CONDITION) {
ax25135net/ax25/ax25_timer.cax25->condition &= ~ACK_PENDING_CONDITION;
ax25136net/ax25/ax25_timer.cif (!ax25->dama_slave)      /* dl1bke 960114 */
ax25137net/ax25/ax25_timer.cax25_timeout_response(ax25);
ax25142net/ax25/ax25_timer.cif (ax25->t3timer > 0 && --ax25->t3timer == 0) {
ax25145net/ax25/ax25_timer.cif (ax25->dama_slave) {
ax25147net/ax25/ax25_timer.cnr_link_failed(&ax25->dest_addr, ax25->device);
ax25149net/ax25/ax25_timer.cax25_clear_queues(ax25);
ax25150net/ax25/ax25_timer.cax25_send_control(ax25, DISC, POLLON, C_COMMAND);
ax25152net/ax25/ax25_timer.cax25->state = AX25_STATE_0;
ax25153net/ax25/ax25_timer.cif (ax25->sk != NULL) {
ax25154net/ax25/ax25_timer.cif (ax25->sk->debug)
ax25156net/ax25/ax25_timer.cax25->sk->state = TCP_CLOSE;
ax25157net/ax25/ax25_timer.cax25->sk->err   = ETIMEDOUT;
ax25158net/ax25/ax25_timer.cif (!ax25->sk->dead)
ax25159net/ax25/ax25_timer.cax25->sk->state_change(ax25->sk);
ax25160net/ax25/ax25_timer.cax25->sk->dead  = 1;
ax25163net/ax25/ax25_timer.cax25_reset_timer(ax25);
ax25167net/ax25/ax25_timer.cif (ax25->state == AX25_STATE_3) {
ax25168net/ax25/ax25_timer.cax25->n2count = 0;
ax25169net/ax25/ax25_timer.cax25_transmit_enquiry(ax25);
ax25170net/ax25/ax25_timer.cax25->state   = AX25_STATE_4;
ax25172net/ax25/ax25_timer.cax25->t3timer = ax25->t3;
ax25175net/ax25/ax25_timer.cif (ax25->idletimer > 0 && --ax25->idletimer == 0) {
ax25180net/ax25/ax25_timer.cax25_clear_queues(ax25);
ax25182net/ax25/ax25_timer.cax25->n2count = 0;
ax25183net/ax25/ax25_timer.cif (!ax25->dama_slave)
ax25184net/ax25/ax25_timer.cax25_send_control(ax25, DISC, POLLON, C_COMMAND);
ax25188net/ax25/ax25_timer.cif (ax25->state == AX25_STATE_1 || ax25->state == AX25_STATE_2)
ax25189net/ax25/ax25_timer.cax25->state = AX25_STATE_0;
ax25191net/ax25/ax25_timer.cax25->state = AX25_STATE_2;
ax25193net/ax25/ax25_timer.cax25->t3timer = 0;
ax25194net/ax25/ax25_timer.cax25->t1timer = ax25->t1 = ax25_calculate_t1(ax25);
ax25196net/ax25/ax25_timer.cif (ax25->sk != NULL)
ax25198net/ax25/ax25_timer.cax25->sk->state = TCP_CLOSE;
ax25199net/ax25/ax25_timer.cax25->sk->err = 0;
ax25200net/ax25/ax25_timer.cif (!ax25->sk->dead)
ax25201net/ax25/ax25_timer.cax25->sk->state_change(ax25->sk);
ax25202net/ax25/ax25_timer.cax25->sk->dead = 1;
ax25203net/ax25/ax25_timer.cax25->sk->destroy = 1;
ax25211net/ax25/ax25_timer.cif (ax25->t1timer == 0 || --ax25->t1timer > 0) {
ax25212net/ax25/ax25_timer.cax25_reset_timer(ax25);
ax25216net/ax25/ax25_timer.cif (!ax25_dev_is_dama_slave(ax25->device)) {
ax25217net/ax25/ax25_timer.cif (ax25->dama_slave)
ax25218net/ax25/ax25_timer.cax25->dama_slave = 0;
ax25219net/ax25/ax25_timer.cax25_t1_timeout(ax25);
ax25232net/ax25/ax25_timer.cvoid ax25_t1_timeout(ax25_cb * ax25)
ax25234net/ax25/ax25_timer.cswitch (ax25->state) {
ax25236net/ax25/ax25_timer.cif (ax25->n2count == ax25->n2) {
ax25237net/ax25/ax25_timer.cif (ax25->modulus == MODULUS) {
ax25239net/ax25/ax25_timer.cnr_link_failed(&ax25->dest_addr, ax25->device);
ax25241net/ax25/ax25_timer.cax25_clear_queues(ax25);
ax25242net/ax25/ax25_timer.cax25->state = AX25_STATE_0;
ax25243net/ax25/ax25_timer.cif (ax25->sk != NULL) {
ax25244net/ax25/ax25_timer.cax25->sk->state = TCP_CLOSE;
ax25245net/ax25/ax25_timer.cax25->sk->err   = ETIMEDOUT;
ax25246net/ax25/ax25_timer.cif (!ax25->sk->dead)
ax25247net/ax25/ax25_timer.cax25->sk->state_change(ax25->sk);
ax25248net/ax25/ax25_timer.cax25->sk->dead  = 1;
ax25251net/ax25/ax25_timer.cax25->modulus = MODULUS;
ax25252net/ax25/ax25_timer.cax25->window  = ax25_dev_get_value(ax25->device, AX25_VALUES_WINDOW);
ax25253net/ax25/ax25_timer.cax25->n2count = 0;
ax25254net/ax25/ax25_timer.cax25_send_control(ax25, SABM, ax25_dev_is_dama_slave(ax25->device)? POLLOFF : POLLON, C_COMMAND);
ax25257net/ax25/ax25_timer.cax25->n2count++;
ax25258net/ax25/ax25_timer.cif (ax25->modulus == MODULUS) {
ax25259net/ax25/ax25_timer.cax25_send_control(ax25, SABM, ax25_dev_is_dama_slave(ax25->device)? POLLOFF : POLLON, C_COMMAND);
ax25261net/ax25/ax25_timer.cax25_send_control(ax25, SABME, ax25_dev_is_dama_slave(ax25->device)? POLLOFF : POLLON, C_COMMAND);
ax25267net/ax25/ax25_timer.cif (ax25->n2count == ax25->n2) {
ax25269net/ax25/ax25_timer.cnr_link_failed(&ax25->dest_addr, ax25->device);
ax25271net/ax25/ax25_timer.cax25_clear_queues(ax25);
ax25272net/ax25/ax25_timer.cax25->state = AX25_STATE_0;
ax25273net/ax25/ax25_timer.cax25_send_control(ax25, DISC, POLLON, C_COMMAND); /* dl1bke */
ax25275net/ax25/ax25_timer.cif (ax25->sk != NULL) {
ax25276net/ax25/ax25_timer.cax25->sk->state = TCP_CLOSE;
ax25277net/ax25/ax25_timer.cax25->sk->err   = ETIMEDOUT;
ax25278net/ax25/ax25_timer.cif (!ax25->sk->dead)
ax25279net/ax25/ax25_timer.cax25->sk->state_change(ax25->sk);
ax25280net/ax25/ax25_timer.cax25->sk->dead  = 1;
ax25283net/ax25/ax25_timer.cax25->n2count++;
ax25284net/ax25/ax25_timer.cif (!ax25_dev_is_dama_slave(ax25->device))  /* dl1bke */
ax25285net/ax25/ax25_timer.cax25_send_control(ax25, DISC, POLLON, C_COMMAND);
ax25290net/ax25/ax25_timer.cax25->n2count = 1;
ax25291net/ax25/ax25_timer.cif (!ax25->dama_slave)      /* dl1bke 960114 */
ax25292net/ax25/ax25_timer.cax25_transmit_enquiry(ax25);
ax25293net/ax25/ax25_timer.cax25->state   = AX25_STATE_4;
ax25297net/ax25/ax25_timer.cif (ax25->n2count == ax25->n2) {
ax25299net/ax25/ax25_timer.cnr_link_failed(&ax25->dest_addr, ax25->device);
ax25301net/ax25/ax25_timer.cax25_clear_queues(ax25);
ax25302net/ax25/ax25_timer.cax25_send_control(ax25, DM, POLLON, C_RESPONSE);
ax25303net/ax25/ax25_timer.cax25->state = AX25_STATE_0;
ax25304net/ax25/ax25_timer.cif (ax25->sk != NULL) {
ax25305net/ax25/ax25_timer.cif (ax25->sk->debug)
ax25307net/ax25/ax25_timer.cax25->sk->state = TCP_CLOSE;
ax25308net/ax25/ax25_timer.cax25->sk->err   = ETIMEDOUT;
ax25309net/ax25/ax25_timer.cif (!ax25->sk->dead)
ax25310net/ax25/ax25_timer.cax25->sk->state_change(ax25->sk);
ax25311net/ax25/ax25_timer.cax25->sk->dead  = 1;
ax25314net/ax25/ax25_timer.cax25->n2count++;
ax25315net/ax25/ax25_timer.cif (!ax25->dama_slave)    /* dl1bke 960114 */
ax25316net/ax25/ax25_timer.cax25_transmit_enquiry(ax25);
ax25321net/ax25/ax25_timer.cax25->t1timer = ax25->t1 = ax25_calculate_t1(ax25);
ax25323net/ax25/ax25_timer.cax25_set_timer(ax25);
ax2567net/netrom/nr_route.cstatic int nr_add_node(ax25_address *nr, const char *mnemonic, ax25_address *ax25,
ax2581net/netrom/nr_route.cif (ax25cmp(ax25, &nr_neigh->callsign) == 0 && nr_neigh->dev == dev)
ax2591net/netrom/nr_route.cnr_neigh->callsign = *ax25;
ax25649net/netrom/nr_route.cint nr_route_frame(struct sk_buff *skb, ax25_cb *ax25)
ax25659net/netrom/nr_route.cif(ax25 && call_in_firewall(PF_NETROM, skb, skb->data)!=FW_ACCEPT)
ax25661net/netrom/nr_route.cif(!ax25 && call_out_firewall(PF_NETROM, skb, skb->data)!=FW_ACCEPT)
ax25667net/netrom/nr_route.cif (ax25 != NULL)
ax25668net/netrom/nr_route.cnr_add_node(nr_src, "", &ax25->dest_addr, ax25->digipeat, ax25->device, 0, nr_default.obs_count);
ax25673net/netrom/nr_route.cif (!nr_route_on && ax25 != NULL)
ax25698net/netrom/nr_route.cif(ax25 && call_fw_firewall(PF_NETROM, skb, skb->data)!=FW_ACCEPT)