| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * CAPI encode/decode prototypes and defines | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 1996 Universidade de Lisboa | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  * Written by Pedro Roque Marques (roque@di.fc.ul.pt) | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  |  * This software may be used and distributed according to the terms of | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  * the GNU General Public License, incorporated herein by reference. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef CAPI_H
 | 
					
						
							|  |  |  | #define CAPI_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define REQ_CAUSE         0x01
 | 
					
						
							|  |  |  | #define REQ_DISPLAY       0x04
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | #define REQ_USER_TO_USER  0x08
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | #define AppInfoMask  REQ_CAUSE | REQ_DISPLAY | REQ_USER_TO_USER
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Connection Setup */ | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_conn_req(const char *calledPN, struct sk_buff **buf, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 			 int proto); | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_decode_conn_conf(struct pcbit_chan *chan, struct sk_buff *skb, | 
					
						
							|  |  |  | 				 int *complete); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_decode_conn_ind(struct pcbit_chan *chan, struct sk_buff *skb, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 				struct callb_data *info); | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_conn_resp(struct pcbit_chan *chan, struct sk_buff **skb); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | 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, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 				      struct sk_buff *skb); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_decode_conn_actv_ind(struct pcbit_chan *chan, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 				     struct sk_buff *skb); | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_conn_active_resp(struct pcbit_chan *chan, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 				 struct sk_buff **skb); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Data */ | 
					
						
							|  |  |  | extern int capi_select_proto_req(struct pcbit_chan *chan, struct sk_buff **skb, | 
					
						
							|  |  |  | 				 int outgoing); | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_decode_sel_proto_conf(struct pcbit_chan *chan, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 				      struct sk_buff *skb); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_activate_transp_req(struct pcbit_chan *chan, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 				    struct sk_buff **skb); | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | extern int capi_decode_actv_trans_conf(struct pcbit_chan *chan, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 				       struct sk_buff *skb); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | 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); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | static inline struct pcbit_chan * | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | capi_channel(struct pcbit_dev *dev, struct sk_buff *skb) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	ushort callref; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 19:52:38 -08:00
										 |  |  | 	callref = *((ushort *)skb->data); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	skb_pull(skb, 2); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (dev->b1->callref == callref) | 
					
						
							|  |  |  | 		return dev->b1; | 
					
						
							|  |  |  | 	else if (dev->b2->callref == callref) | 
					
						
							|  |  |  | 		return dev->b2; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return NULL; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |