summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2024-08-21 11:55:06 +0800
committerluwenpeng <[email protected]>2024-08-21 18:18:13 +0800
commita0fb57e84314ea019a0cf88dcbc430998e8b40c2 (patch)
treec7552a7bb7bc4c159a3357f71b9e9ae6553057d3 /include
parent1aece166cd091d071ce45b4bbce527fb115cc741 (diff)
refactor: update packet get layer/tunnel API
Diffstat (limited to 'include')
-rw-r--r--include/stellar/layer.h36
-rw-r--r--include/stellar/tunnel.h19
2 files changed, 18 insertions, 37 deletions
diff --git a/include/stellar/layer.h b/include/stellar/layer.h
index 6250481..9cf7e4a 100644
--- a/include/stellar/layer.h
+++ b/include/stellar/layer.h
@@ -70,26 +70,24 @@ struct layer
};
int packet_get_layer_count(const struct packet *pkt);
-// return 0: success 
-// return -1: failed
-int packet_get_layer_by_idx(const struct packet *pkt, int idx, struct layer *out);
+const struct layer *packet_get_layer_by_idx(const struct packet *pkt, int idx);
-#define PACKET_FOREACH_LAYER_INORDER(pkt, layer) \
- for (int i = 0; i < packet_get_layer_count(pkt) && packet_get_layer_by_idx(pkt, i, &layer) == 0; i++)
-
-#define PACKET_FOREACH_LAYER_REVERSE(pkt, layer) \
- for (int i = packet_get_layer_count(pkt) - 1; i >= 0 && packet_get_layer_by_idx(pkt, i, &layer) == 0; i--)
-
-#define PACKET_GETALL_LAYERS(pkt, layers) \
- ({ \
- memset(layers, 0, sizeof(layers)); \
- int size = sizeof(layers) / sizeof(layers[0]); \
- int count = packet_get_layer_count(pkt); \
- int num = count > size ? size : count; \
- for (int i = 0; i < num && packet_get_layer_by_idx(pkt, i, &layers[i]) == 0; i++) \
- /* void */; \
- num; \
- })
+// // example: foreach layer in packet (inorder)
+// int count = packet_get_layer_count(pkt);
+// for (int i = 0; i < count; i++)
+// {
+// const struct layer *layer = packet_get_layer_by_idx(pkt, i);
+// // do something with layer
+// }
+//
+//
+// // example: foreach layer in packet (reverse)
+// int count = packet_get_layer_count(pkt);
+// for (int i = count - 1; i >= 0; i--)
+// {
+// const struct layer *layer = packet_get_layer_by_idx(pkt, i);
+// // do something with layer
+// }
#ifdef __cplusplus
}
diff --git a/include/stellar/tunnel.h b/include/stellar/tunnel.h
index 07d2339..17d1d75 100644
--- a/include/stellar/tunnel.h
+++ b/include/stellar/tunnel.h
@@ -33,7 +33,7 @@ struct tunnel
enum tunnel_type type;
int layer_count;
- struct layer layers[MAX_LAYERS_PER_TUNNEL];
+ const struct layer *layers[MAX_LAYERS_PER_TUNNEL];
};
int packet_get_tunnel_count(const struct packet *pkt);
@@ -41,23 +41,6 @@ int packet_get_tunnel_count(const struct packet *pkt);
// return -1: failed
int packet_get_tunnel_by_idx(const struct packet *pkt, int idx, struct tunnel *out);
-#define PACKET_FOREACH_TUNNEL_INORDER(pkt, tunnel) \
- for (int i = 0; i < packet_get_tunnel_count(pkt) && packet_get_tunnel_by_idx(pkt, i, &tunnel) == 0; i++)
-
-#define PACKET_FOREACH_TUNNEL_REVERSE(pkt, tunnel) \
- for (int i = packet_get_tunnel_count(pkt) - 1; i >= 0 && packet_get_tunnel_by_idx(pkt, i, &tunnel) == 0; i--)
-
-#define PACKET_GETALL_TUNNELS(pkt, tunnels) \
- ({ \
- memset(tunnels, 0, sizeof(tunnels)); \
- int size = sizeof(tunnels) / sizeof(tunnels[0]); \
- int count = packet_get_tunnel_count(pkt); \
- int num = count > size ? size : count; \
- for (int i = 0; i < num && packet_get_tunnel_by_idx(pkt, i, &tunnels[i]) == 0; i++) \
- /* void */; \
- num; \
- })
-
#ifdef __cplusplus
}
#endif