Lines Matching refs:skb

32 				 struct sk_buff *skb, int proto);
38 struct sk_buff *skb, int proto);
42 struct sk_buff *skb);
69 struct sk_buff *skb);
858 struct sk_buff *skb;
865 skb = alloc_skb(hl + count, GFP_ATOMIC);
866 if (!skb) {
870 skb_reserve(skb, hl);
871 if (copy_from_user(skb_put(skb, count), buf, count))
873 kfree_skb(skb);
877 printk(KERN_DEBUG "ppp xmit: len %d\n", (int) skb->len);
878 isdn_ppp_frame_log("xmit", skb->data, skb->len, 32, is->unit, lp->ppp_slot);
881 isdn_ppp_send_ccp(lp->netdev, lp, skb); /* keeps CCP/compression states in sync */
883 isdn_net_write_super(lp, skb);
944 static int isdn_ppp_skip_ac(struct ippp_struct *is, struct sk_buff *skb)
946 if (skb->len < 1)
949 if (skb->data[0] == 0xff) {
950 if (skb->len < 2)
953 if (skb->data[1] != 0x03)
957 skb_pull(skb, 2);
967 * get the PPP protocol header and pull skb
970 static int isdn_ppp_strip_proto(struct sk_buff *skb)
974 if (skb->len < 1)
977 if (skb->data[0] & 0x1) {
979 proto = skb->data[0];
980 skb_pull(skb, 1);
982 if (skb->len < 2)
984 proto = ((int) skb->data[0] << 8) + skb->data[1];
985 skb_pull(skb, 2);
994 void isdn_ppp_receive(isdn_net_dev *net_dev, isdn_net_local *lp, struct sk_buff *skb)
1006 kfree_skb(skb);
1013 (long)is, (long)lp, lp->ppp_slot, is->unit, (int)skb->len);
1014 isdn_ppp_frame_log("receive", skb->data, skb->len, 32, is->unit, lp->ppp_slot);
1017 if (isdn_ppp_skip_ac(is, skb) < 0) {
1018 kfree_skb(skb);
1021 proto = isdn_ppp_strip_proto(skb);
1023 kfree_skb(skb);
1029 skb = isdn_ppp_decompress(skb, is, NULL, &proto);
1030 if (!skb) // decompression error
1036 isdn_ppp_mp_receive(net_dev, lp, skb);
1041 isdn_ppp_push_higher(net_dev, lp, skb, proto);
1046 * address/control and protocol have been stripped from the skb
1050 isdn_ppp_push_higher(isdn_net_dev *net_dev, isdn_net_local *lp, struct sk_buff *skb, int proto)
1077 printk(KERN_DEBUG "push, skb %d %04x\n", (int) skb->len, proto);
1078 isdn_ppp_frame_log("rpush", skb->data, skb->len, 32, is->unit, lp->ppp_slot);
1081 skb = isdn_ppp_decompress(skb, is, mis, &proto);
1082 if (!skb) // decompression error
1089 skb->protocol = htons(ETH_P_IPX);
1094 skb->protocol = htons(ETH_P_IP);
1109 if (slhc_remember(ippp_table[net_dev->local->ppp_slot]->slcomp, skb->data, skb->len) <= 0) {
1113 skb->protocol = htons(ETH_P_IP);
1119 struct sk_buff *skb_old = skb;
1121 skb = dev_alloc_skb(skb_old->len + 128);
1123 if (!skb) {
1125 skb = skb_old;
1128 skb_put(skb, skb_old->len + 128);
1129 skb_copy_from_linear_data(skb_old, skb->data,
1137 skb->data, skb_old->len);
1142 skb_trim(skb, pkt_len);
1143 skb->protocol = htons(ETH_P_IP);
1149 isdn_ppp_receive_ccp(net_dev, lp, skb, proto);
1152 if (skb->data[0] == CCP_RESETREQ ||
1153 skb->data[0] == CCP_RESETACK)
1157 isdn_ppp_fill_rq(skb->data, skb->len, proto, lp->ppp_slot); /* push data to pppd device */
1158 kfree_skb(skb);
1166 skb_push(skb, 4);
1169 u_int16_t *p = (u_int16_t *) skb->data;
1175 && BPF_PROG_RUN(is->pass_filter, skb) == 0) {
1178 kfree_skb(skb);
1182 && BPF_PROG_RUN(is->active_filter, skb) == 0)) {
1189 skb_pull(skb, 4);
1195 skb->dev = dev;
1196 skb_reset_mac_header(skb);
1197 netif_rx(skb);
1203 kfree_skb(skb);
1208 * checks whether we have enough space at the beginning of the skb
1213 struct sk_buff *skb = *skb_p;
1215 if (skb_headroom(skb) < len) {
1216 struct sk_buff *nskb = skb_realloc_headroom(skb, len);
1220 dev_kfree_skb(skb);
1223 printk(KERN_DEBUG "isdn_ppp_skb_push:under %d %d\n", skb_headroom(skb), len);
1224 dev_kfree_skb(skb);
1228 return skb_push(skb, len);
1235 * VJ compression may change skb pointer!!! .. requeue with old
1236 * skb isn't allowed!!
1240 isdn_ppp_xmit(struct sk_buff *skb, struct net_device *netdev)
1255 kfree_skb(skb);
1267 switch (ntohs(skb->protocol)) {
1276 skb->protocol);
1277 dev_kfree_skb(skb);
1293 kfree_skb(skb);
1305 skb_pull(skb, IPPP_MAX_HEADER);
1311 *skb_push(skb, 4) = 1; /* indicate outbound */
1314 __be16 *p = (__be16 *)skb->data;
1321 && BPF_PROG_RUN(ipt->pass_filter, skb) == 0) {
1324 kfree_skb(skb);
1328 && BPF_PROG_RUN(ipt->active_filter, skb) == 0)) {
1333 skb_pull(skb, 4);
1339 printk(KERN_DEBUG "xmit skb, len %d\n", (int) skb->len);
1341 isdn_ppp_frame_log("xmit0", skb->data, skb->len, 32, ipts->unit, lp->ppp_slot);
1359 new_skb = alloc_skb(hl + skb->len, GFP_ATOMIC);
1365 new_skb->dev = skb->dev;
1366 skb_put(new_skb, skb->len);
1367 buf = skb->data;
1369 pktlen = slhc_compress(ipts->slcomp, skb->data, skb->len, new_skb->data,
1372 if (buf != skb->data) {
1375 dev_kfree_skb(skb);
1376 skb = new_skb;
1381 skb_trim(skb, pktlen);
1382 if (skb->data[0] & SL_TYPE_COMPRESSED_TCP) { /* cslip? style -> PPP */
1384 skb->data[0] ^= SL_TYPE_COMPRESSED_TCP;
1386 if (skb->data[0] >= SL_TYPE_UNCOMPRESSED_TCP)
1388 skb->data[0] = (skb->data[0] & 0x0f) | 0x40;
1401 skb = isdn_ppp_compress(skb, &proto, ipt, ipts, 0);
1408 printk(KERN_DEBUG "xmit2 skb, len %d, proto %04x\n", (int) skb->len, proto);
1416 unsigned char *data = isdn_ppp_skb_push(&skb, 3);
1424 unsigned char *data = isdn_ppp_skb_push(&skb, 5);
1441 skb = isdn_ppp_compress(skb, &proto, ipt, ipts, 1);
1444 unsigned char *data = isdn_ppp_skb_push(&skb, 1);
1450 unsigned char *data = isdn_ppp_skb_push(&skb, 2);
1457 unsigned char *data = isdn_ppp_skb_push(&skb, 2);
1467 printk(KERN_DEBUG "skb xmit: len: %d\n", (int) skb->len);
1468 isdn_ppp_frame_log("xmit", skb->data, skb->len, 32, ipt->unit, lp->ppp_slot);
1471 isdn_net_writebuf_skb(lp, skb);
1484 int isdn_ppp_autodial_filter(struct sk_buff *skb, isdn_net_local *lp)
1490 switch (ntohs(skb->protocol)) {
1499 skb->protocol);
1508 *skb_pull(skb, IPPP_MAX_HEADER - 4) = 1; /* indicate outbound */
1511 __be16 *p = (__be16 *)skb->data;
1518 && BPF_PROG_RUN(is->pass_filter, skb) == 0;
1520 && BPF_PROG_RUN(is->active_filter, skb) == 0;
1522 skb_push(skb, IPPP_MAX_HEADER - 4);
1602 struct sk_buff *skb, u32 last_seq);
1607 static void isdn_ppp_mp_free_skb(ippp_bundle *mp, struct sk_buff *skb);
1608 static void isdn_ppp_mp_print_recv_pkt(int slot, struct sk_buff *skb);
1611 struct sk_buff *skb)
1630 dev_kfree_skb(skb);
1639 isdn_ppp_mp_print_recv_pkt(lp->ppp_slot, skb);
1642 skb, is->last_link_seqno);
1654 isdn_ppp_mp_free_skb(mp, skb);
1677 newfrag = skb;
1844 struct sk_buff *skb, u32 last_seq)
1847 int flags = skb->data[0] & (MP_BEGIN_FRAG | MP_END_FRAG);
1851 seq = ntohl(*(__be32 *)skb->data) & MP_LONGSEQ_MASK;
1852 skb_push(skb, 1);
1858 seq = ntohs(*(__be16 *)skb->data) & MP_SHORTSEQ_MASK;
1869 skb_push(skb, 3); /* put converted seqence back in skb */
1871 *(u32 *)(skb->data + 1) = seq; /* put seqence back in _host_ byte
1873 skb->data[0] = flags; /* restore flags */
1894 struct sk_buff *skb;
1906 skb = from;
1907 skb_pull(skb, MP_HEADER_LEN);
1920 if ((skb = dev_alloc_skb(tot_len)) == NULL) {
1931 skb_put(skb, len),
1938 proto = isdn_ppp_strip_proto(skb);
1939 isdn_ppp_push_higher(net_dev, lp, skb, proto);
1942 static void isdn_ppp_mp_free_skb(ippp_bundle *mp, struct sk_buff *skb)
1944 dev_kfree_skb(skb);
1948 static void isdn_ppp_mp_print_recv_pkt(int slot, struct sk_buff *skb)
1951 slot, (int) skb->len,
1952 (int) skb->data[0], (int) skb->data[1], (int) skb->data[2],
1953 (int) skb->data[3], (int) skb->data[4], (int) skb->data[5]);
2222 struct sk_buff *skb;
2228 /* Alloc large enough skb */
2230 skb = alloc_skb(len + hl + 16, GFP_ATOMIC);
2231 if (!skb) {
2236 skb_reserve(skb, hl);
2240 p = skb_put(skb, 2);
2246 p = skb_put(skb, 6);
2257 p = skb_put(skb, len);
2261 /* skb is now ready for xmit */
2263 isdn_ppp_frame_log("ccp-xmit", skb->data, skb->len, 32, is->unit, lp->ppp_slot);
2265 isdn_net_write_super(lp, skb);
2523 static struct sk_buff *isdn_ppp_decompress(struct sk_buff *skb, struct ippp_struct *is, struct ippp_struct *master,
2548 return skb;
2562 kfree_skb(skb);
2566 len = ipc->decompress(stat, skb, skb_out, &rsparm);
2567 kfree_skb(skb);
2594 ipc->incomp(stat, skb, *proto);
2595 return skb;
2603 * returns original skb if we haven't compressed the frame
2604 * and a new skb pointer if we've done it
2667 struct sk_buff *skb, int proto)
2683 isdn_ppp_frame_log("ccp-rcv", skb->data, skb->len, 32, is->unit, lp->ppp_slot);
2696 switch (skb->data[0]) {
2731 len = (skb->data[2] << 8) | skb->data[3];
2737 isdn_ppp_ccp_reset_ack_rcvd(mis, skb->data[1]);
2741 skb->data[0],
2742 skb->data[1],
2743 len ? &skb->data[4] : NULL,
2749 isdn_ppp_ccp_reset_ack_rcvd(is, skb->data[1]);
2753 skb->data[0],
2754 skb->data[1],
2755 len ? &skb->data[4] : NULL,
2770 len = (skb->data[2] << 8) | skb->data[3];
2776 skb->data[0],
2777 skb->data[1],
2778 len ? &skb->data[4] : NULL,
2785 skb->data[0],
2786 skb->data[1],
2787 len ? &skb->data[4] : NULL,
2797 : skb->data[1],
2808 skb->data[1],
2809 len ? &skb->data[4] : NULL,
2843 static void isdn_ppp_send_ccp(isdn_net_dev *net_dev, isdn_net_local *lp, struct sk_buff *skb)
2849 if (!skb || skb->len < 3)
2858 data = skb->data;
2861 if (skb->len < 5)
2870 isdn_ppp_frame_log("ccp-xmit", skb->data, skb->len, 32, is->unit, lp->ppp_slot);