| /* | 
 |  * CAPI encode/decode prototypes and defines | 
 |  * | 
 |  * Copyright (C) 1996 Universidade de Lisboa | 
 |  *  | 
 |  * Written by Pedro Roque Marques (roque@di.fc.ul.pt) | 
 |  * | 
 |  * This software may be used and distributed according to the terms of  | 
 |  * the GNU General Public License, incorporated herein by reference. | 
 |  */ | 
 |  | 
 | #ifndef CAPI_H | 
 | #define CAPI_H | 
 |  | 
 |  | 
 | #define REQ_CAUSE         0x01 | 
 | #define REQ_DISPLAY       0x04 | 
 | #define REQ_USER_TO_USER  0x08  | 
 |  | 
 | #define AppInfoMask  REQ_CAUSE|REQ_DISPLAY|REQ_USER_TO_USER  | 
 |  | 
 | /* Connection Setup */ | 
 | extern int capi_conn_req(const char * calledPN, struct sk_buff **buf, | 
 | 			 int proto); | 
 | extern int capi_decode_conn_conf(struct pcbit_chan * chan, struct sk_buff *skb, | 
 | 				 int *complete);  | 
 |  | 
 | extern int capi_decode_conn_ind(struct pcbit_chan * chan, struct sk_buff *skb, | 
 | 				struct callb_data *info); | 
 | extern int capi_conn_resp(struct pcbit_chan* chan, struct sk_buff **skb); | 
 |  | 
 | extern int capi_conn_active_req(struct pcbit_chan* chan, struct sk_buff **skb); | 
 | extern int capi_decode_conn_actv_conf(struct pcbit_chan * chan,  | 
 | 				      struct sk_buff *skb); | 
 |  | 
 | extern int capi_decode_conn_actv_ind(struct pcbit_chan * chan,  | 
 | 				     struct sk_buff *skb); | 
 | extern int capi_conn_active_resp(struct pcbit_chan* chan,  | 
 | 				 struct sk_buff **skb); | 
 |  | 
 | /* Data */ | 
 | extern int capi_select_proto_req(struct pcbit_chan *chan, struct sk_buff **skb, | 
 | 				 int outgoing); | 
 | extern int capi_decode_sel_proto_conf(struct pcbit_chan *chan,  | 
 | 				      struct sk_buff *skb); | 
 |  | 
 | extern int capi_activate_transp_req(struct pcbit_chan *chan,  | 
 | 				    struct sk_buff **skb); | 
 | extern int capi_decode_actv_trans_conf(struct pcbit_chan *chan,  | 
 | 				       struct sk_buff *skb); | 
 |  | 
 | extern int capi_tdata_req(struct pcbit_chan* chan, struct sk_buff *skb); | 
 | extern int capi_tdata_resp(struct pcbit_chan *chan, struct sk_buff ** skb); | 
 |  | 
 | /* Connection Termination */ | 
 | extern int capi_disc_req(ushort callref, struct sk_buff **skb, u_char cause); | 
 |  | 
 | extern int capi_decode_disc_ind(struct pcbit_chan *chan, struct sk_buff *skb); | 
 | extern int capi_disc_resp(struct pcbit_chan *chan, struct sk_buff **skb); | 
 |  | 
 | #ifdef DEBUG | 
 | extern int capi_decode_debug_188(u_char *hdr, ushort hdrlen); | 
 | #endif | 
 |  | 
 | static inline struct pcbit_chan *  | 
 | capi_channel(struct pcbit_dev *dev, struct sk_buff *skb) | 
 | { | 
 | 	ushort callref; | 
 |  | 
 | 	callref = *((ushort*) skb->data); | 
 | 	skb_pull(skb, 2); | 
 |  | 
 | 	if (dev->b1->callref == callref) | 
 | 		return dev->b1; | 
 | 	else if (dev->b2->callref == callref) | 
 | 		return dev->b2; | 
 |  | 
 | 	return NULL; | 
 | } | 
 |  | 
 | #endif | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  |