int br_fd = 0;
char bridge[IFNAMSIZ];
char str_error[ERROR_MESSAGE_LENGTH];
+#if !defined(SIOCBRADDBR)
unsigned long arg[3] = { BRCTL_ADD_BRIDGE, (unsigned long)bridge };
+#endif
if (NULL == bridge_name || strlen(bridge_name) > IFNAMSIZ) {
MESH_LOGE("Invalid parameter [%p]", bridge_name);
}
strncpy(bridge, bridge_name, IFNAMSIZ);
+#ifdef SIOCBRADDBR
+ val = ioctl(br_fd, SIOCBRADDBR, bridge_name);
+#else
val = ioctl(br_fd, SIOCSIFBR, arg);
+#endif
if (val < 0) {
strerror_r(errno, str_error, ERROR_MESSAGE_LENGTH);
MESH_LOGD("Failed to create bridge [%s(%d)]", str_error, errno);
int br_fd = 0;
char bridge[IFNAMSIZ];
char str_error[ERROR_MESSAGE_LENGTH];
+#if !defined(SIOCBRDELBR)
unsigned long arg[3] = { BRCTL_DEL_BRIDGE, (unsigned long)bridge };
+#endif
if (NULL == bridge_name || strlen(bridge_name) > IFNAMSIZ) {
MESH_LOGE("Invalid parameter [%p]", bridge_name);
}
strncpy(bridge, bridge_name, IFNAMSIZ);
+#ifdef SIOCBRDELBR
+ val = ioctl(br_fd, SIOCBRDELBR, bridge_name);
+#else
val = ioctl(br_fd, SIOCSIFBR, arg);
+#endif
if (val < 0) {
strerror_r(errno, str_error, ERROR_MESSAGE_LENGTH);
MESH_LOGD("Failed to remove bridge [%s(%d)]", str_error, errno);
int if_index = if_nametoindex(interface);
char str_error[ERROR_MESSAGE_LENGTH];
+#if !defined(SIOCBRADDIF)
unsigned long args[4] = { BRCTL_ADD_IF, if_index, 0, 0 };
+#endif
if (NULL == bridge_name || strlen(bridge_name) > IFNAMSIZ) {
MESH_LOGE("Invalid parameter [%p]", bridge_name);
}
strncpy(ifr.ifr_name, bridge_name, IFNAMSIZ);
+#ifdef SIOCBRADDIF
+ ifr.ifr_ifindex = if_index;
+ val = ioctl(br_fd, SIOCBRADDIF, &ifr);
+#else
ifr.ifr_data = (char *)args;
val = ioctl(br_fd, SIOCDEVPRIVATE, &ifr);
+#endif
if (val < 0) {
strerror_r(errno, str_error, ERROR_MESSAGE_LENGTH);
MESH_LOGD("Failed to add interface [%s] into bridge [%s(%d)]",
int if_index = if_nametoindex(interface);
char str_error[ERROR_MESSAGE_LENGTH];
+#if !defined(SIOCBRDELIF)
unsigned long args[4] = { BRCTL_DEL_IF, if_index, 0, 0 };
+#endif
if (NULL == bridge_name || strlen(bridge_name) > IFNAMSIZ) {
MESH_LOGE("Invalid parameter [%p]", bridge_name);
}
strncpy(ifr.ifr_name, bridge_name, IFNAMSIZ);
+#ifdef SIOCBRDELIF
+ ifr.ifr_ifindex = if_index;
+ val = ioctl(br_fd, SIOCBRDELIF, &ifr);
+#else
ifr.ifr_data = (char *)args;
val = ioctl(br_fd, SIOCDEVPRIVATE, &ifr);
+#endif
if (val < 0) {
strerror_r(errno, str_error, ERROR_MESSAGE_LENGTH);
MESH_LOGD("Failed to delete interface [%s] from bridge [%s(%d)]",